如何在保持宽高比的同时动态创建ImageViews

时间:2018-09-26 19:19:21

标签: java android firebase android-recyclerview imageview

所以我在制作一个文本应用程序时遇到了麻烦,我的主要问题是我必须动态地添加ImageViews,然后再将其添加到Linear Layout中,最后添加到像这样的RecyclerView中。

final ImageView imageView = new ImageView(holder.mView.getContext());
imageView.setAdjustViewBounds(true);
LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(total_width, total_height);
imageView.setLayoutParams(lp);
holder.message_layout_2.addView(imageView);

所以我想发生的是如果图像大于total_width或total_height(例如1080、2160),则将图像按比例缩小。但是,使用布局参数时,.setMaxHeight()似乎不起作用。因此,recylcer视图在下一个模型之间将有大量的空白,或者图像将延伸到当前活动之外。

除了.setMaxHeight()/。setMaxWidth()之外,是否还有其他方法可以使此工作有效?我试图尝试手动进行数学运算,但是由于我的最大宽度和高度不同,因此很难保持正确的图像比例!我想避免最大高度和宽度相同,以便图像可以尽可能地大(约为活动总宽度和高度的一半)。

对不起,我没有足够的代表来发布其屏幕截图。但是我认为,我的数学失败的主要原因是当图像达到我设置的最大宽度和高度时,如果有人知道正确的公式或方法来做到这一点,那将是很好的。

此外,我不能对图像视图使用wrap_content或类似的东西,因为我希望recyclerview在加载图像之前知道图像大小,以避免在图像加载时其他视图被推高(我这样做通过将图像尺寸详细信息存储在消息模型中,以便可以在图像加载之前确定尺寸)

0 个答案:

没有答案