Android解决在RelativeLayout中使用ImageView, adjustViewBounds 无效

Posted lankton

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android解决在RelativeLayout中使用ImageView, adjustViewBounds 无效相关的知识,希望对你有一定的参考价值。

今天在布局时使用ImageView, 想要的效果是高度一定, 宽度随着高度的变化自动变化,保证ImageView和图片的宽高比一致,于是自然想到了adjustViewBounds属性。结果使用出来,没有达到想要的显示效果。经过验证, 发现是因为ImageView直接被RelativeLayout包裹的缘故。
几次验证的现象分别如下。

在RelativeLayout中

  1. layout_height设定一个定值如100dp, layout_width设为wrap_content, adjustViewBounds设为true, 无效,无论高度如何调整,宽度依然保持不变,为wrap_content
  2. 反过来,layout_width设定定值,layout_height设为wrap_content, 则设置adjustViewBounds为true,生效,高度会随宽度变化。

在LinearLayout中

无论是定高, 然后宽度wrap_content, 或者是反过来, 全部生效。

解决办法

在RelativeLayout中使用ImageView, 若要adjustViewBounds生效,可以在ImageView外面包裹一层LinearLayout。

说明(关于maxWidth, maxHeight)

  1. 以上的验证中,无论adjustViewBounds生效还是未生效, 都没有设置maxHeight或者maxWidth,这与网上普遍流传的 adjustViewBounds 必须和maxWidth或者maxHeight配合使用 才能生效的结论不符。
  2. 而且maxHeight或者maxWidth有其自己的含义,随便拿来用,只怕与本来的设计思路不符。
  3. 同时, 我在Android官方文档中也没有看到 必须使用maxWidth or minHeight的说法。
    资料来源:https://developer.android.com/reference/android/widget/ImageView.html#attr_android:adjustViewBounds
    (since Level 1)

求教

为什么出现这种情况,我现在没有明确的答案, 如果你知道, 或者有自己的见解, 希望不吝赐教。谢谢~

以上是关于Android解决在RelativeLayout中使用ImageView, adjustViewBounds 无效的主要内容,如果未能解决你的问题,请参考以下文章

如何避免在android中的relativelayout中重叠视图

Android展开/折叠RelativeLayout

RelativeLayout不能居中的解决的方法

开发问题及解决--java.lang.IllegalStateException: Circular dependencies cannot exist in RelativeLayout

Android RelativeLayout 将一个视图的中心对齐到另一个视图的右上角

二进制 XML 文件第 2 行:膨胀类 android.widget.RelativeLayout 时出错