Как сделать изображение заполнить RelativeLayout фон без растяжения
В моем проекте Android я не совсем уверен, как сделать фоновое изображение заполнить весь корневой элемент RelativeLayout
в XML, который является размером экрана. Я хочу быть уверенным, что это работает для всех пропорций, поэтому изображение будет кликать по вертикали или по горизонтали по мере необходимости. Кто-нибудь знает, как сделать это легко? Я видел только вопросы относительно ImageView
и Button
s, но не очень общие View
s.
Мой XML файл в настоящее время:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/enclosing_rl"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/background"
android:fitsSystemWindows="false">
<!-- Other elements -->
</RelativeLayout>
Ответы
Ответ 1
Помимо превращения вашего изображения в девяти патч, я не думаю, что это возможно. Вместо этого вы можете добавить ImageView в качестве первого вида в RelativeLayout. Установите layout_centerInParent в true и установите layout_width и layout_height в match_parent. Затем установите scaleType в centerCrop. Это позволит убедиться, что изображение заполняет экран без каких-либо искажений, но в зависимости от размера экрана/ориентации, некоторые из верхних/нижних или левых/правых изображений могут быть обрезаны.
<ImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_centerInParent="true"
android:scaleType="centerCrop"
android:src="@drawable/background" />
Любые другие представления в RelativeLayout будут отображаться поверх ImageView, если это первое представление в RelativeLayout (когда вы находитесь в xml).
Ответ 2
Создайте XML-ресурс с возможностью рисования в папке res/drawable:
<?xml version="1.0" encoding="utf-8"?>
<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
android:src="@drawable/background"
android:tileMode="repeat" />
Используйте этот чертеж в качестве фона вместо @drawable/background
Ответ 3
в соответствии с этим ответом Если вы хотите, чтобы ваш ImageView
заполнил ваш RelativeLayout
, используйте параметры align
для ImageView
.
вы можете поместить все свои представления в LinearLayout
и установить align
на свой фон ImageView
:
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content" >
<ImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:src="@drawable/my_background"
android:scaleType="centerCrop"
android:layout_alignTop="@+id/my_views"
android:layout_alignBottom="@+id/my_views"
/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/my_views"
android:orientation="vertical" >
<!-- stuff -->
</LinearLayout>
</RelativeLayout>
Ответ 4
Его умный и 100% рабочий ответ - установить свойство scaleType изображения!
android:scaleType="fitCenter"