2011-01-27 187 views
9

如何以編程方式設置TableRow中ImageView的寬度?我不希望單元格寬度改變,只有單元格內部圖像的寬度。Android:如何以編程方式設置ImageView的寬度TableRow

佈局:(省略號是有減少的代碼)

<TableLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="horizontal"> 
<TableRow android:gravity="center_vertical"> 
<Button>...</Button> 
<ImageView 
    android:id="@+id/fruit" 
    android:layout_width="120dp" 
    android:layout_height="44dp" 
    android:src="@drawable/apple" 
    android:scaleType="matrix" 
></ImageView> 
<Button>...</Button> 
</TableRow> 
<TableRow>...</TableRow> 
</TableLayout> 

的Java:

ImageView iv = (ImageView) findViewById(R.id.fruit); 
LayoutParams frame = iv.getLayoutParams(); 
frame.width = 100; 
iv.setLayoutParams(frame); 

編輯:我想被裁剪圖像在我設置的邊界內,並使表格單元成爲原始寬度。下面是代碼示例,由於parag的建議,對我有效:

Bitmap bmp = BitmapFactory.decodeResource(getResources() , R.drawable.apple); 
int width = 50; 
int height = 44; 
Bitmap resizedbitmap = Bitmap.createBitmap(bmp, iv.getScrollX(), iv.getScrollY(), width, height); 
iv.setImageBitmap(resizedbitmap); 

回答

31

的另一種方式,美調整位圖

ImageView img=(ImageView)findViewById(R.id.ImageView01); 
    Bitmap bmp=BitmapFactory.decodeResource(getResources(), R.drawable.sc01); 
    int width=200; 
    int height=200; 
    Bitmap resizedbitmap=Bitmap.createScaledBitmap(bmp, width, height, true); 
    img.setImageBitmap(resizedbitmap); 
+0

正是我所需要的 – keybee 2013-08-28 10:10:05

2

要縮放圖像嗎?還是裁剪?

要縮放,請嘗試ImageView。 setImageMatrix和Matrix。 preScale

如果你不想找出矩陣,你可以嘗試Rects(邊界框)。用ImageView獲取原始矩形。 getDrawingRect然後定義你想要的任何Rect並使用Matrix。 setRectToRect來創建您的圖像矩陣。

否則,你試過ImageView。 setMaxWidth

+0

setMaxWidth沒有工作。我嘗試了你的建議,但Matrix.setRectToRect需要一個縮放圖像的Bitmap.Config。 – caseadilla 2011-01-27 19:22:16

相關問題