Я создал действие с изображением заголовка. Это изображение заголовка изначально создаётся в макете Activity 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> ...
Я хотел бы заменить это на выделение фона, чтобы я мог использовать пространство изображения заголовка для отображения данных, и это избавляет меня от повторения одного и того же макета в разных действиях.
По этой причине я создал drawable, на который я могу ссылаться в атрибуте 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"
Но он по-прежнему выглядит/масштабируется по-другому, чем изображение.
Каким будет правильное определение фона?