Как я могу добавить фон в представление, не изменяя его размер, показывая только ту часть изображения, которая соответствует предыдущему пространству?
Пример:
У меня такой исходный макет:
<?xml version = "1.0" encoding = "utf-8"?>
<LinearLayout xmlns:android = "http://schemas.android.com/apk/res/android"
xmlns:app = "http://schemas.android.com/apk/res-auto"
xmlns:tools = "http://schemas.android.com/tools"
android:layout_width = "match_parent"
android:layout_height = "match_parent"
android:background = "#8900"
android:orientation = "vertical"
tools:context = "com.tappx.myapplication.MainActivity">
<LinearLayout
android:layout_width = "match_parent"
android:layout_height = "wrap_content"
android:background = "#fff"
android:orientation = "vertical">
<TextView
android:layout_width = "wrap_content"
android:layout_height = "100dp"
android:layout_gravity = "center"
android:background = "#0f0"
android:gravity = "center"
android:text = "HELLO" />
<TextView
android:layout_width = "wrap_content"
android:layout_height = "100dp"
android:layout_gravity = "center"
android:background = "#f0f"
android:gravity = "center"
android:text = "HELLO" />
</LinearLayout>
</LinearLayout>
И я хочу применить следующее изображение как градиент к белому фону:
Для этого (обратите внимание, что градиент заполняет горизонталь и имеет нижнюю гравитацию):
Моя проблема в том, что установка градиента как android:background увеличивает размер представления контейнера до этого (теряя красную нижнюю часть)
Также попытался создать растровое изображение xml без результатов:
<?xml version = "1.0" encoding = "utf-8"?>
<layer-list xmlns:android = "http://schemas.android.com/apk/res/android">
<item>
<bitmap
android:gravity = "bottom"
android:src = "@drawable/gradient" />
</item>
</layer-list>
Как я могу этого добиться?




Изображение, которое вы используете, очень длинное, а ваш контейнер настроен на обертывание содержимого, поэтому он расширяется для размещения изображения.
Поскольку вы уже используете фиксированную высоту внутренних элементов, вы можете просто установить фиксированную высоту для контейнера (200dp), и она будет работать.
Я предполагаю, что проблема связана с вашей высотой LinearLayout, установленной на "wrap_content". Вам действительно нужно использовать LinearLayouts? Может быть, ConstraintLayout с горизонтальной направляющей, например, будет лучшим решением? В таком случае вы сможете добавить свою картинку, приклеив ее нижнюю часть к любому конкретному виду.