如何让ImageView在RelativeLayout中填充父布局并消除上下空白?
解决ImageView背景无法填满父布局的问题
嘿,我明白你遇到的困扰了——想用300x300的图片填满整个父布局,但当前设置让图片死守正方形比例,导致上下留了空白。这主要是你用的fitCenter和adjustViewBounds组合在起作用:
fitCenter会严格保持图片原始宽高比,把图片居中放在ImageView里adjustViewBounds="true"会让ImageView跟着图片的比例调整自身尺寸,所以当父布局不是正方形时,ImageView就没法撑满,自然会留空白
下面给你几个实用的解决办法,你可以根据需求选:
方法1:裁剪图片填满View(保持比例,无空白)
如果你能接受图片边缘被裁剪一部分,推荐用centerCrop这个scaleType。它会按比例放大图片,让图片填满整个ImageView,超出的部分会被裁剪掉,同时保证图片完全不变形。记得去掉adjustViewBounds="true",不然会干扰效果:
<ImageView android:layout_width="match_parent" android:layout_height="match_parent" android:src="@drawable/app_background" android:scaleType="centerCrop" />
方法2:拉伸图片填满View(可能变形,无空白)
如果完全不想裁剪图片,哪怕变形也要填满整个布局,那就用fitXY这个scaleType。它会强制把图片拉伸到和ImageView一模一样的尺寸,完全忽略原始比例:
<ImageView android:layout_width="match_parent" android:layout_height="match_parent" android:src="@drawable/app_background" android:scaleType="fitXY" />
方法3:把图片设为背景替代src
另一种思路是不用src属性,而是把图片设为ImageView的背景。Android的背景默认会自动拉伸填充整个View,这样也能轻松达到填满的效果:
<ImageView android:layout_width="match_parent" android:layout_height="match_parent" android:background="@drawable/app_background" />
不过要注意,背景的绘制层级在src之下,如果之后要给ImageView加前景内容,这个方式完全没问题。
内容的提问来源于stack exchange,提问作者Tim Slim
相关产品推荐
相关产品推荐

