Центрирование фонового изображения в Android - PullRequest
22 голосов
/ 03 октября 2010

У меня есть фоновое изображение размером 100 x 100, которое я хочу центрировать в приложении для Android.Есть ли способ сделать это?

Я думаю, что это очень помогло бы с изменением ориентации для простых приложений.

Ответы [ 3 ]

45 голосов
/ 03 октября 2010

Вы можете использовать BitmapDrawable для случая. Создайте файл centered.xml в папке res/drawable:

<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
    android:src="@drawable/your_image"
    android:gravity="center"/>

Тогда вы можете использовать centered в качестве фона.

0 голосов
/ 12 июня 2019

С ConstraintLayout вы можете напрямую установить тег background . Если честно, мне потребовалось несколько часов, чтобы разобраться с этим, но это намного проще, чем вы думаете;)

0 голосов
/ 22 января 2017

Вопрос старый, и у ответа есть один существенный недостаток - у нас нет возможности изменить размер изображения, это означает, что он полностью зависит от имеющегося у нас чертежа.

При использовании новейших библиотек дизайна Android корень представления активности будетбыть CoordinatorLayout или DrawerLayout, и эти макеты не имеют представления по умолчанию, показывающего иерархию, это означает, что первое дочернее представление будет затенено любым следующим, а второе - третьим и ... последним.Таким образом, чтобы иметь центрированный фон, нам нужно добавить в качестве первого ребенка LinearLayout с центрированным изображением внутри него.Фрагмент кода:

<android.support.v4.widget.DrawerLayout>
<!-- first child -->
<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center"
    >
    <ImageView
        android:layout_width="match_parent"
        android:layout_height="60dp"
        android:src="@drawable/some_background"
        />
</LinearLayout> 
... next view will be above

Мы можем полностью настроить размер изображения, который будет центрирован с помощью опции LinearLayout Гравитация.Важно также иметь match_parent по ширине и высоте LinearLayout, спасибо, что центр будет также центром родительского просмотра.

То же самое можно сделать в RelativeLayout или любом другомдругой макет, позволяющий перекрывать дочерние представления.

...