scrollview加载imageview,顶部和底部出现空白的bug

今天在写一个页面的时候,因为要加载的图片是一张长图片,所以外层用scrollview包裹,但是在真机上运行后,imageview的头部和底部都有一条空白,在stackoverflow上找到两种解决方案。

1.在imageview中将adjustViewBounds属性设置为true

在google开发文档中是这样描述的
imageview

意思就是,如果你希望imageview保持drawable一样的宽高比,就将adjustViewBounds设值为true。这个方法亲测有效。

2.在scrollview的跟布局设置fillViewport属性为true

同样,看看文档中是怎么描述的
scrollview

大概就是,是否扩展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。
希望对你有所帮助!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容