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

Фоновое изображение для wrap_content

Я создал собственное фоновое изображение и хотел использовать его в качестве фона для макета с высотой wrap_content. Однако общая высота содержимого внутри этого макета намного меньше высоты фонового изображения.

Когда я установил его как фон в XML с помощью android: background = "@drawable/image" , я заметил, что он отображает всю высоту изображения, хотя высота фактического содержимого намного короче.

Есть ли способ остановить это?

Спасибо.

4b9b3361

Ответ 1

У меня была аналогичная проблема, и я использовал 9patch. Полное 9 патч-изображения показывалось в качестве фона, хотя содержимое, к которому оно было прикреплено, было не таким большим (использовало wrap_content). Я не уверен, почему Android решил показать полное изображение, а не масштабировать фон, чтобы он соответствовал содержимому.

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

alt textalt text

Ответ 2

Вы можете преобразовать фоновое изображение в 9-patch drawable или использовать растровое изображение XML, чтобы изменить поведение вашего изображения, когда оно больше контейнера. Подробнее см. эту страницу.

Ответ 3

Я также столкнулся с этой проблемой. Если установить фоновый ресурс слишком мал, у вас могут возникнуть проблемы с соотношением сторон. Решение, которое я нашел, состояло в том, чтобы разделить фоновое изображение на три части: верхнюю, среднюю и нижнюю. Каждое из этих изображений представляет собой фон из трех разных макетов/изображений. Средняя часть - это та, которая содержит свойство "wrap_content":

Top: bg_top

Средний: bg_middle

Внизу: enter image description here

По мере увеличения размера содержимого границы будут оставаться неизменными, а средний будет увеличиваться (как и весь "ящик" ). Конечно, это решение для случая, когда раздел вашего фонового изображения имеет смысл.