按钮总是在可绘制的状态列表中显示第一列样式,无论其状态如何



长期阅读stackoverflow,第一次带问题。我遇到的问题似乎很愚蠢,但我找不到任何解释它的信息。

我是新的Android编程,我正在与自定义按钮背景的项目工作。我使用状态列表绘制不同的按钮,看起来像这样:

<?xml version="1.0" encoding="UTF-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

<item>
    <bitmap android:src="@drawable/button_pressed_background" android:gravity="center"/>
    android:state_pressed="true"
</item>
<item>
    <bitmap android:src="@drawable/button_focused_background" android:gravity="center"/>
    android:state_focused="true"
</item>
 <item>
    <bitmap android:src="@drawable/button_standard_background" android:gravity="center"/>
    android:state_pressed="false"
    android:state_focused="false"
</item>

</selector>

在声明按钮的xml中,我只需添加android:background="@drawable/button_drawable"行,其中button_drawable.xml是可绘制的状态列表。

看起来很简单,但在所有情况下,按钮显示的背景都在状态列表的第一个<item>部分中列出,无论它们的状态如何。实际上,在上面的例子中,我可以将第一个<item>部分改为包含android:state_pressed="false",并且button_pressed_background仍然显示!就好像所有的按钮状态同时为真和假。

我正在使用模拟器进行开发,但在AVD模拟器和运行在Oracle VirtualBox上的Android x86上都可以看到这种行为。知道为什么会这样吗?

用下面的代码定义一个选择器,并尝试将其作为背景:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_focused="true" android:state_pressed="true" android:drawable="@drawable/background_sel"/>
    <item android:state_focused="false" android:state_pressed="true" android:drawable="@drawable/background_sel"/>
    <item android:state_focused="true" android:drawable="@drawable/background_sel"/>
    <item android:state_focused="false" android:state_pressed="false" android:drawable="@drawable/background_normal"/>
</selector>

不是android:src,是android:drawable

<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_window_focused="false" android:state_enabled="true"
    android:drawable="@drawable/btn_new_default" />    
<item android:state_pressed="true" 
    android:drawable="@drawable/btn_new_default_pressed" />
<item android:state_focused="true" android:state_enabled="true"
    android:drawable="@drawable/btn_new_default" />
<item android:state_enabled="true"
    android:drawable="@drawable/btn_new_default" />

要了解更多操作,请从

获取原始文件

驱动器: android-sdk-windows_new 平台 android-8 res 可拉的 数据btn_default.xml

相关内容

  • 没有找到相关文章

最新更新