图层列表按钮选择器不填充宽度

时间:2012-01-26 19:40:35

标签: android android-button

编辑:图层列表似乎是这样绘制的:正常的按钮背景9-patch位于后面。突出显示9-patch正在里面正常背景中绘制,而不是在它上面。因此,它进入正常背景的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

0 个答案:

没有答案