Android Override 9-patch padding в XML с одной стороны

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

Если линии заполнения не включены, Android использует левую и верхнюю линии для определения этой области рисования.

http://developer.android.com/guide/topics/graphics/2d-graphics.html#nine-patch

Однако вы можете переопределить его в XML, используя android:padding=0dp или =Xdp. К сожалению, использование android:paddingLeft=Xdp не работает. Итак, вы застряли с равномерным заполнением. Я пытался сделать это:

  android:padding="2dp"
  android:paddingLeft="20dp"

Это не повлияло на заполнение слева. Размещение их в файле styles.xml дало аналогичные результаты.

Единственный хак, который я видел, чтобы обойти это, состоял в том, чтобы установить дополнение в коде.


person pt123    schedule 30.12.2012    source источник


Ответы (1)


if (представлено android:padding) оно переопределяет все другие значения заполнения else if (android:paddingXXX представлено) оно переопределяет bg drawable paddingXXX (XXX = Left|Right|Top|Bottom) else if (view имеет drawable bg) значения заполнения из этого drawable (девять патчей в вашем случае) будет использоваться, иначе будет применено заполнение по умолчанию (обычно ноль)

Так что не используйте android:padding="2dp". свойство padding переопределяет все. Просто используйте paddingLeft = 20dp, paddingTop = 2dp, paddingRight = 2dp, paddingBottom = 2dp.

Или вы можете установить paddingLeft = 20dp, и другие значения заполнения будут взяты из bg drawable.

person Leonidos    schedule 30.12.2012
comment
Спасибо, я думал, что установка стилей будет работать как CSS. Это решило проблему. Наводка на вопрос, но если я использую view.setBackgroundResource(9patch_background); 9patch_background переопределяет заполнение, установленное через XML, есть ли способ установить фон без переопределения заполнения в XML. - person pt123; 31.12.2012
comment
вы должны получить значения заполнения, установить фон, вернуть старые значения заполнения. - person Leonidos; 31.12.2012