Android解决在RelativeLayout中使用ImageView, adjustViewBounds 无效
Posted lankton
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android解决在RelativeLayout中使用ImageView, adjustViewBounds 无效相关的知识,希望对你有一定的参考价值。
今天在布局时使用ImageView, 想要的效果是高度一定, 宽度随着高度的变化自动变化,保证ImageView和图片的宽高比一致,于是自然想到了adjustViewBounds属性。结果使用出来,没有达到想要的显示效果。经过验证, 发现是因为ImageView直接被RelativeLayout包裹的缘故。
几次验证的现象分别如下。
在RelativeLayout中
- layout_height设定一个定值如100dp, layout_width设为wrap_content, adjustViewBounds设为true, 无效,无论高度如何调整,宽度依然保持不变,为wrap_content
- 反过来,layout_width设定定值,layout_height设为wrap_content, 则设置adjustViewBounds为true,生效,高度会随宽度变化。
在LinearLayout中
无论是定高, 然后宽度wrap_content, 或者是反过来, 全部生效。
解决办法
在RelativeLayout中使用ImageView, 若要adjustViewBounds生效,可以在ImageView外面包裹一层LinearLayout。
说明(关于maxWidth, maxHeight)
- 以上的验证中,无论adjustViewBounds生效还是未生效, 都没有设置maxHeight或者maxWidth,这与网上普遍流传的 adjustViewBounds 必须和maxWidth或者maxHeight配合使用 才能生效的结论不符。
- 而且maxHeight或者maxWidth有其自己的含义,随便拿来用,只怕与本来的设计思路不符。
- 同时, 我在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中重叠视图
开发问题及解决--java.lang.IllegalStateException: Circular dependencies cannot exist in RelativeLayout