Android:如何以编程方式在TableRow中设置ImageView的宽度

你如何以编程方式设置TableRow中ImageView的宽度? 我不希望单元格的宽度改变,只有单元格内的图像的宽度。

布局:(省略号在那里减less代码)

<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的build议:

 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); 

Solutions Collecting From Web of "Android:如何以编程方式在TableRow中设置ImageView的宽度"

另一种方式,你调整位图的大小

  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); 

你想缩放图像吗? 还是裁剪?

要缩放,请尝试ImageView。 setImageMatrix和Matrix。 preScale 。

如果你不想计算matrix,你可以尝试Rects(边界框)。 用ImageView获取原始矩形。 getDrawingRect然后定义你想要的任何矩形并使用matrix。 setRectToRect创build你的图像matrix。

否则,你有没有尝试ImageView。 setMaxWidth ?