Подтвердить что ты не робот

Как сделать изображение заполнить 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>
4b9b3361

Ответ 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"