官方 api 解释:An optional argument to supply a maximum width for this view. Only valid if setAdjustViewBounds (boolean) has been set to true.
那么 adjustViewBounds="true" 是什么意思呢
当 adjustViewBounds="true" 的时候,Adjust the ImageView's bounds to preserve the aspect ration of its drawable。什么意思呢?意思是说通过调整 ImageView 的界限来保持图片的宽高比例。这里的比例是指图片(真正需要加载的图片)宽高的比例,而非 ImageView 比例,简单来说 adjustViewBounds="true" 的时候,图片的宽高比有可能发生变化。
ImageView 设置 maxWidth/maxHeight 和 adjustViewBounds
在使用 ImgaView 的时候,我们往往会在布局文件中设置 maxWidth/maxHeight,maxWidth/maxHeight 是用来设置 ImageView 可以显示的最大宽 / 高,但是在 Android 机制中,只用当设置 adjustViewBounds="true" 的时候,maxWidth/maxHeight 设置效果才能有效。
那么 adjustViewBounds="true" 是什么意思呢
当 adjustViewBounds="true" 的时候,Adjust the ImageView's bounds to preserve the aspect ration of its drawable。什么意思呢?意思是说通过调整 ImageView 的界限来保持图片的宽高比例。这里的比例是指图片(真正需要加载的图片)宽高的比例,而非 ImageView 比例,简单来说 adjustViewBounds="true" 的时候,图片的宽高比有可能发生变化。
那么接下来我们分析一下,如果设置 adjustViewBounds="true",图片宽高比到底将会什么变化
在布局文件 XML 中设置 adjustViewBounds="true" 的时候,会将这个 ImageView 的 scaleType 属性设置为 fitCenter,但是如果同时在 XML 文件中设置 android:scaleType,则 android:scaleType 的优先级会更高,adjustViewBounds="true" 中对 scaleType 属性设置将会失效。这种情况,只有在 Java 代码中设置 setAdjustViewBounds(true)的时候,才会生效。
(一)当 ImageView 的 layout_width 和 layout _height 都是固定值的时候。 adjustViewBounds="true" 是没有效果的,因为图片会按照 ImageView 的比例被直接填充到 ImageView 控件中。
(二)当 ImageView 的 layout width 和 layout height 其中有一个属性固定值的时候。 图片的宽 / 高将会与 ImageView 的 layout width/layout height 的固定值进行比较。如果图片宽 / 高小,图片将会以其高 / 宽来填充 ImageView,此时的 ImageView 的 ImageView 的 layout height/layout width 将与图片的高 / 宽相同。如果图片宽 / 高大于或者等于,ImageView 将与图片拥有相同的宽高比,也就是说图片将会以自身的宽高比填充到 ImageView。
举一个简单的例子:ImageView 的 layout width="100dp",layout height="wrap_ content" 的时候,图片的宽度将会与 100dp 进行对比(抛开单位换算)。A、如果图片的宽度小于 100dp,ImageView 的 layout_height 将与图片的高相同,即图片不会缩放,完整显示在 ImageView 中,ImageView 高度与图片实际高度相同。图片没有占满 ImageView,ImageView 中有空白。B、如果图片的宽度大于或等于 100dp,图片将保持自身宽高比缩放,完整显示在 ImageView 中,并且完全占满 ImageView。
(三)当 ImageView 的 layout width 和 layout height 都是 wrap_content 的时候。 adjustViewBounds 是没有意义的,因为 ImageView 将始终与图片拥有相同的宽高比(但是并不是相同的宽高值,通常都会放大一些)。
作者:吾非言 链接:https://www.jianshu.com/p/13de1774471c 来源:简书 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。