如何根据宽度动态设置imageView高度

时间:2015-03-17 12:29:15

标签: android imageview

在列表行中有一些imageView。

行中imageView的计数不同,即可以是三个或两个imageView。

对于宽度,可以使用

指定
layout_width="0dp"
layout_weight="1dp" 

表示行中的每个imageView。但问题是高度,如果行有两个imageView,它应该是imageView宽度的90%,而80%的宽度是行有三个imageView。

有没有办法在xml中这样做? 如果没有,那么最好的地方在哪里进行计算并设置高度而不会在图纸上留下太多的开销? 谢谢!

2 个答案:

答案 0 :(得分:1)

不确定在xml中是否有办法。但这可以在代码中运行,在适配器:: getView()中执行,获取相应的imagView后,更改其高度layoutParam但保持宽度为一。

Point size = new Point();

((WindowManager) context.getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay().getSize(size);
int screenWidth = size.x;

int columnNumber = (isItThree ? 3 : 2);
double ratio = (isItThree ? 0.8 : 0.9)

int desiredImageHeight = screenWidth/colunmNumber * ratio;

ViewGroup.LayoutParams imglayoutParams = imgView.getLayoutParams();
imglayoutParams.height = desiredImageHeight;
imgView.setLayoutParams(imglayoutParams);

答案 1 :(得分:0)

为了保持身高和宽度之间的比例,最佳做法是: 使用dp中的值定义其中一个属性,使用换行内容定义另一个属性。

在你的情况下:

android:layout_width="20dp"
android:layout_heignt="wrap_content"

通过这样做,应根据给定宽度的比例调整高度。