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

how to dynamically set imageView height based on its width

列表行中有一些 imageView。

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

对于宽度,可以使用

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

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

在 xml 中有办法做到这一点吗? 如果没有,在没有太多绘图开销的情况下进行计算和设置高度的最佳位置在哪里? 谢谢!

为了保持高度和宽度之间的比例,最佳做法是: 用 dp 中的值定义它的一个 属性,另一个用 wrap content 定义。

你的情况:

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

这样做高度应该根据给定宽度的比例进行调整。

不确定 xml 中是否有办法。但这在代码中有效,在 adapter::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);