图片显示上下有空白的解决办法

1.最近在项目中遇到了ScrollView中嵌套ImageView,导致图片上下有空白

如图:

     

在网上找解决的办法,说在ImageView中设置

 android:scaleType=”fitXY” 这个属性,虽然解决了,但是又出现了一个新的问题 就是图片失针了, 
继续找,找到了这个属性 android:adjustViewBounds=”true”这样问题就解决了

如图:

ImageView 的adjustViewBounds 属性

取值为true时:
Adjust the ImageView’s bounds to preserve the aspect ration of its drawable.
调整ImageView的界限来保持图像纵横比不变。
这并不意味着ImageView的纵横比就一定和图像的纵横比相同
 
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。

2.当滑动图片之后再次打开该图片,图片位置显示的是上次滑动的位置:
解决办法:scrollView.scrollTo(0,0);
3.不同分辨率的图片在各个分辨率的drawable文件夹都要放,否则会出现图片拉伸等失真情况
新建不同分辨率的drawable文件夹方法详见如下:https://blog.csdn.net/x_Danding/article/details/79937285
4.在代码中引用图片资源的时候千万注意有没有红色感叹号的提示,若有,很可能该图片无法正常打开,再次添加试试

猜你喜欢

转载自blog.csdn.net/hizhangyuping/article/details/80692423