Как сделать так, чтобы изображение с девятью патчами расширялось только по горизонтали?

У меня есть изображение с девятью патчами, которое я хотел бы центрировать по вертикали в представлении и расширять его только по горизонтали.

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

Любые идеи?

Спасибо


person cottonBallPaws    schedule 10.03.2012    source источник


Ответы (4)


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

Если вы хотите, чтобы ваше изображение с девятью патчами расширялось только по горизонтали, вам нужно будет подготовить исходное изображение с желаемой высотой и шириной, равной одному пикселю, и нарисовать точку вверху и еще одну слева, обратите внимание на расширяемая область, которую мы указываем слева, предназначена только для того, чтобы сделать ее действительным патчем из девяти. Теперь вы можете поместить изображение в макет (установить высоту макета как высоту вашего изображения), установить android:layout_graviy="center_vertical" для изображения, после чего изображение будет расширено по горизонтали.

person neevek    schedule 10.03.2012
comment
Одна точка в центре может быть лучшим вариантом в зависимости от вашего изображения. - person Ravi Vyas; 14.03.2012
comment
Ты это пробовал? Я не думаю, что это возможно. Для изображения с девятью патчами вы можете размещать точки только по краям изображения. - person neevek; 14.03.2012
comment
Извините за путаницу, я на самом деле говорил о центре левого края :) - person Ravi Vyas; 14.03.2012
comment
Без точки вверху это недопустимый патч из девяти, eclipse это не нравится, и вы получите ошибку времени компиляции. No marked region found along edge. - Found along top edge. - person neevek; 14.03.2012

Я хотел расширить по горизонтали, не портя дизайн левой и правой стороны. Что я сделал, так это добавил дополнительный 1 пиксель (прозрачный) вверху и внизу изображения. После этого с левой стороны я добавил черную точку в строку, где я добавил дополнительный отступ. А также расширяемую область в верхней части изображения. Я проделал это для всех 4 разных плотностей, и все будет хорошо :)

С помощью масштаба и заливки Рэдли я просто рисую черную линию с левой стороны.

Чтобы сделать его центрированным по вертикали, как указано в вашем посте, просто добавьте android:layout_graviy="center_vertical" для линейного макета или android:layout_centerVertical="true" для относительного макета.

Надеюсь, что это поможет.

person Lee Yi Hong    schedule 05.08.2014

если вы не хотите, чтобы ваше изображение расширялось по вертикали, то почему вы не можете напрямую обойтись без использования 9-патча, сохранив другой как fill_parent.

person Pavandroid    schedule 10.03.2012

Взгляните на следующий пример Пример ссылки. Вы можете установить расширяемая область и имеют горизонтальные расширяющиеся девять патчей

person Ravi    schedule 01.10.2018