У меня есть фоновое изображение около 100 х 100, которое я хочу сосредоточить в приложении для Android. Есть ли способ сделать это?
Я думаю, что это сильно поможет с изменениями ориентации для простых приложений.
У меня есть фоновое изображение около 100 х 100, которое я хочу сосредоточить в приложении для Android. Есть ли способ сделать это?
Я думаю, что это сильно поможет с изменениями ориентации для простых приложений.
Вы можете использовать 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 в качестве фона.
Вопрос старый, и у ответа есть одна большая слабость - у нас нет возможности изменить размер изображения, это означает, что он полностью зависит от того, какой из доступных мы имеем.
При использовании новейших библиотек разработки 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
или любом другом макете, который позволяет перекрывать дочерние представления.
С ConstraintLayout вы можете установить фоновый тег напрямую. Честно говоря, мне понадобилось несколько часов, чтобы разобраться с этим, но это намного проще, чем вы думаете;)