2010-09-06 2 views
12

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

Когда я установить его в качестве фона в XML через андроида: фон = «@ вытяжку/образом», я заметил, что он отображает всю высоту изображения, хотя высота фактического содержания значительно короче.

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

Спасибо.

ответ

0

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

+0

Не могли бы вы подробнее рассказать об этом, используя XML-растровое изображение? Я попытался использовать XML-растровое изображение и использовал свойство android: gravity = «top | fill_horizontal | clip_vertical», чтобы узнать, не решит ли это проблему, но все равно этого не делает. – user440308

+0

Ну, я не пробовал XML-растровое изображение для вашего случая, как ваш, но варианты выглядят многообещающими. 9-патч-путь будет работать наверняка - я уже использовал это. –

+0

Хм. Я пробовал все варианты, которые могли бы помочь, но я думаю, что могу делать что-то неправильно. Я искал всюду в Интернете, и никто, кажется, не сталкивался с этой проблемой ... – user440308

2

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

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

alt text alt text

+0

Большое спасибо за это. Я потратил несколько часов на выяснение, почему мое 9patch-изображение сгенерировало представление, которое было намного выше, чем должно было быть с параметром height_content в качестве параметра высоты. Интересно, что этот эффект, похоже, зависит от устройства.На Nexus7 высота представления была правильной даже с оригинальным большим фоновым изображением, тогда как на Xperia ray высота обзора была почти в два раза больше, чем следовало бы. На Xperia mini и на дешевом планшете Android с Cyanogen Mod «эффект» был там, но не такой сильный, как на рентгеновском снимке Xperia. – Nantoka

0

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

Топ: bg_top

Средние: bg_middle

Дно: enter image description here

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

Смежные вопросы