我相信android:gravity
您正在寻找的属性是clip_vertical
and clip_horizontal
,但只是一个建议。这些属性的行为方式可能与您认为的不同。您不能使用它们在两个方向上剪切图像,只能使用一个方向。以下代码:
<bitmap
android:src="@drawable/background"
android:gravity="clip_vertical|clip_horizontal" />
不允许在两个方向上裁剪图像......它实际上适合视图内的图像,就好像您没有设置任何一个一样。设置剪辑参数本质上是设置该方向以适合视图,而另一个方向被裁剪掉,这也可能令人困惑。几个例子:
<!-- Force fit top/bottom, crop left/right with image centered -->
<bitmap
android:src="@drawable/background"
android:gravity="clip_vertical" />
<!-- Force fit top/bottom, align image left and crop right edge -->
<bitmap
android:src="@drawable/background"
android:gravity="left|clip_vertical" />
<!-- Force fit left/right, crop top/bottom with image centered -->
<bitmap
android:src="@drawable/background"
android:gravity="clip_horizontal" />
<!-- Force fit left/right, align top and crop bottom egde -->
<bitmap
android:src="@drawable/background"
android:gravity="top|clip_horizontal" />
请注意,这些设置允许裁剪大于视图的图像,但如果图像小于视图,其内容仍将被拉伸以适应。为了控制图像在<bitmap>
标签中小于视图时的行为方式,请查看tileMode
. 注意tileMode
和gravity
不能一起使用;gravity
如果两者都包含,将被忽略。
如果除此之外您还需要对图像的缩放方式进行更多动态控制,并且您不想使用ImageView
,您还可以将生成的 Drawable 包装在 a 中ScaleDrawable
,并根据测量的视图在 Java 代码中配置 x/y 缩放百分比尺寸。