2013-01-11 54 views
2

我正在試圖在屏幕上顯示一個小圖像。我希望它是一個小廣場。使用下面的代碼,它顯示爲一個長而扁平的矩形。我附上了下面的圖片。ImageView中的圖像拉伸 - Android

Java代碼

ImageView q1Image = (ImageView)findViewById(R.id.q1Image); 
q1Image.setScaleType(ScaleType.FIT_XY); 

XML代碼

<TableRow 
    android:id="@+id/row4" 
    android:layout_width="0dip" 
    android:layout_height="wrap_content" 
    android:layout_weight="1" > 

    <ImageView 
     android:id="@+id/q1Image" 
     android:layout_width="10dp" 
     android:layout_height="10dp" 
     android:layout_weight=".1" 
     android:textSize="8sp" 
     android:gravity="center_horizontal" /> 

test

EDIT 如果我使寬度和高度等於50dp每個,圖像變得更大,但仍然是一個平坦的長方形。

+0

請與您的TableRow的父母發佈佈局。 –

+0

https://themillibit.wordpress.com/2017/09/25/why-are-my-bitmaps-all-stretched/我寫了一篇博客文章來回答這個問題 –

回答

4

FIT_XY將舒展你的形象,以適應所有YOUT ImageView的。 使用規模型fitC​​enter如果您所屬的ImageView

q1Image.setScaleType(ScaleType.FIT_CENTER); 

參考http://developer.android.com/reference/android/widget/ImageView.ScaleType.html 對於其他選項將圖片放置中心保持縱橫比。

+0

切換到''''FIT_CENTER''''後仍然出現相同的扁平矩形。 – Matt

+1

似乎TableLayout正在用ImageView拉伸一列。嘗試在您的TableLayout中添加andorid:shrinkColumns =「0」和android:stretchColumns =「1」。 –

+0

作品!我添加了你對''''TableLayout''''的建議,並從''''ImageView''''中取出了layout_weight。謝謝Doc! – Matt

16

您的縮放圖片錯誤。這裏是所有scaletypes:

enter image description here

前行(1-R)的中心,centerCrop,centerInside。

底行(l-r):fitCenter,fitStart,fitEnd,fitXY。

你可能需要fitCenter

q1Image.setScaleType(ScaleType.FIT_CENTER); 
+0

我試過''''q1Image.setScaleType (ScaleType.FIT_CENTER);'''',並且也嘗試了@ ben75建議的''''CENTER'''。所有仍然給我與最初發布的結果相同的結果。 – Matt

1

沒有完整佈局XML這只是猜測,但看到你不出現改變的規模型已經解決了這一問題,這裏有一些其他建議:

  1. 豈不如果ImageViewlayout_weight爲零,會更好嗎?

  2. 您是不是在TableLayout上指定android:stretchColumns

  3. 圖像看起來像被拉伸以匹配下面文本的寬度。你的桌子上有多少列?它看起來像其他行中的文本在第0列中(如同第一行中的圖像一樣),而第一行中的文本在第一列中。如果您想讓其他行的列零爲空,則需要在文本視圖上指定android:layout_column

+0

第1列應該是所有圖像。該表有4列。現在,除了第1行,第0列中的所有小寫字母i都是佔位符。 layout_weight設置爲.1,因爲我只希望列0佔到行空間的10%(佔位符正確顯示)。我指定''''android:stretchColumns =「*」''''。 – Matt

+0

圖片的尺寸是100x100。不知道這是否重要。 – Matt