编辑:图层列表似乎是这样绘制的:正常的按钮背景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,它具有与非按下状态背景完全相同的可伸展区域和填充框。
这完全符合 。问题是在按下状态下,标准背景正常显示,但顶部的突出显示并未完全填充按钮的宽度(高度正常填充)。
以下是截图:
这是正常(未按下)状态下的相同按钮:
有趣的是,如果我将选择器中的图层列表替换为按下状态的高亮显示,则它会完全填充宽度:
此模式适用于应用中的所有按钮。我没有为按钮指定任何填充。
编辑:以下是slukian提供的建议的结果: