Селектор кнопки списка слоев не заполняет ширину - PullRequest
1 голос
/ 26 января 2012

РЕДАКТИРОВАТЬ: Кажется, что список слоев выглядит так: Обычный 9-патч фона кнопки находится сзади.Выделенный 9-патч рисуется внутри нормального фона, а не поверх него.Таким образом, это происходит внутри поля дополнения, указанного в свойствах 9-патчей обычного фона.Это было обнаружено, когда я возился с отступом на нормальном фоне.Это не то, что я хочу.Есть ли другой способ, без использования списка слоев, для меня просто наложить выделенное изображение поверх обычного фона в нажатом состоянии?

У меня есть селектор для фона кнопки:

<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:drawable="@drawable/btnprimary" android:state_pressed="false" />
    <item android:drawable="@drawable/btn_primary_pressed_bg" android:state_pressed="true" />

</selector>

btnprimary - это 9-патчовый файл .png, который является нормальным состоянием.btn_primary_pressed_bg - это список слоев:

<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >

    <item android:drawable="@drawable/btnprimary"/>

    <item android:drawable="@drawable/btnhighlight"/>

</layer-list>

Как вы можете видеть, нажатым состоянием является нормальный фон с выделенным слоем сверху для обозначения нажатого состояния.btnhighlight - это еще один 9-patch-файл .png, который имеет точно такую ​​же растягиваемую область и поле для отступов, что и фон без нажатия.

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

Вот скриншот:

Pressed

А вот та же кнопка в обычном (не нажатом) состоянии:

Not pressed

Интересно, еслиЯ заменяю список слоев в селекторе только на выделение для нажатого состояния, оно точно заполняет ширину:

Highlighted

Этот шаблон применяется ко всем кнопкам вприложение.У меня не задано никаких отступов для кнопки.

РЕДАКТИРОВАТЬ: Вот результат предложения, предоставленного slukian:

Strange

...