今天在写一个页面的时候,因为要加载的图片是一张长图片,所以外层用scrollview包裹,但是在真机上运行后,imageview的头部和底部都有一条空白,在stackoverflow上找到两种解决方案。
1.在imageview中将adjustViewBounds属性设置为true
在google开发文档中是这样描述的意思就是,如果你希望imageview保持drawable一样的宽高比,就将adjustViewBounds设值为true。这个方法亲测有效。
2.在scrollview的跟布局设置fillViewport属性为true
同样,看看文档中是怎么描述的大概就是,是否扩展scrollview的内容以填充视图。这个方法反复试了好几次都没有什么用。
所以最后采取了第一种方案。
XML定义里的android:adjustViewBounds="true"会将这个ImageView的scaleType设为fitCenter。不过这个fitCenter会被后面定义的scaleType属性覆盖(如果定义了的话),除非在Java代码里再次显示调用setAdjustViewBounds(true)。
如果设置的layout_width与layout_height都是定值,那么设置adjustViewBounds是没有效果的,ImageView将始终是设定的定值的宽高。
如果设置的layout_width与layout_height都是wrap_content,那么设置adjustViewBounds是没有意义的,因为ImageView将始终与图片拥有相同的宽高比(但是并不是相同的宽高值,通常都会放大一些)。
如果两者中一个是定值,一个是wrap_content,比如layout_width="100px",layout_height="wrap_content"时,ImageView的宽将始终是100px,而高则分两种情况:
(1)当图片的宽小于100px时,layout_height将与图片的高相同,即图片不会缩放,完整显示在ImageView中,ImageView高度与图片实际高度相同。图片没有占满ImageView,ImageView中有空白。
(2)当图片的宽大于等于100px时,此时ImageView将与图片拥有相同的宽高比,因此ImageView的layout_height值为:100除以图片的宽高比。比如图片是500X500的,那么layout_height是100。图片将保持宽高比缩放,完整显示在ImageView中,并且完全占满ImageView。
希望对你有所帮助!