我创建了一个带有标题图片的活动。这个标题图片最初是在活动的布局xml中使用ImageView创建的,其中scaleType设置为centerCrop。这样做可以实现我的需求,将图像居中,将其在纵向模式下剪裁左右部分,在横向模式下全部显示。
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingTop="30dp"
android:paddingBottom="6dp"
android:paddingLeft="6dp"
android:paddingRight="6dp"
android:background="#919EAC"
android:orientation="vertical" >
<ImageView
android:id="@+id/header_image"
android:layout_width="match_parent"
android:layout_height="120dp"
android:contentDescription="@string/header_description"
android:scaleType="centerCrop"
android:src="@drawable/header" />
.... <other views> ...
我希望用一个背景图替换它,这样我就可以利用头部图片的空间来显示数据,而且这样可以避免在不同的活动中重复使用相同的布局。
为此,我创建了一个可在android:background属性中引用的可绘制对象:
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item>
<shape android:shape="rectangle" >
<solid android:color="#919EAC" />
</shape>
</item>
<item>
<bitmap
android:antialias="true"
android:gravity="top|center_horizontal"
android:src="@drawable/header" />
</item>
</layer-list>
这个drawable定义了有颜色的背景,否则布局会定义它,并且它还定义了一个标题图片,否则将作为ImageView包含在布局中。
然而现在我的图片被缩放了,而我希望它被裁剪。
查看 Android 文档后,我尝试了其他重力模式,比如
android:gravity="top|clip_horizontal"
但它似乎仍然与图像视图显示/缩放不同。
背景可绘制的正确定义是什么?