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

Центрирование фонового изображения на Android

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

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

4b9b3361

Ответ 1

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

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

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

Ответ 2

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

При использовании новейших библиотек разработки 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 gravity. Важно также иметь match_parent по ширине и высоте LinearLayout, благодаря тому, что центр также будет центром родительского представления.

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

Ответ 3

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