Отцентрируйте растровое изображение и повторите крайний пиксель - PullRequest
5 голосов
/ 16 июня 2011

Я пытаюсь использовать изображение в качестве фона в моем приложении для Android. Если изображение не умещается на экране, я хочу, чтобы изображение располагалось по центру по горизонтали и по вертикали. Оставшаяся область экрана должна быть заполнена повторением краев.

Мой макет XML выглядит так:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent" android:layout_height="fill_parent"
    android:background="@drawable/background_image"
>
    <ScrollView
        android:layout_width="fill_parent" android:layout_height="fill_parent"
    >
    ...
    </ScrollView>
</LinearLayout>    

Я попытался пометить левый и правый столбец, а также верхний ряд пикселей как растягиваемый с помощью draw9patch. Это работает на небольших устройствах, но не на Galaxy Tab 10.1 и Motorola Xoom. Край повторяется по вертикали, но не по горизонтали.

Я также пытался создать xml-drawable с tileMode = "зажим"

<?xml version="1.0" encoding="utf-8"?>
<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
    android:filter="true"
    android:gravity="center"
    android:tileMode="clamp"
    android:src="@drawable/background"
/>

но это не позволяет мне центрировать изображение по горизонтали. Как я могу объединить зажим и center_horizontal?

1 Ответ

8 голосов
/ 11 июля 2011

Согласно документации "Гравитация игнорируется, когда включен режим листов."

Для этого можно использовать настраиваемое рисование. Здесь - пример зажима слева и справа с горизонтально центрированным изображением.

...