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