长时间的stackoverflow阅读器,第一次有问题。我遇到的问题似乎很愚蠢,但我找不到任何解释它的信息。
我是Android编程的新手,正在开发一个带有自定义按钮背景的项目。我正在使用状态列表drawables来显示如下所示的不同按钮:
<?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时都会看到这种行为。知道为什么会这样吗?
答案 0 :(得分:1)
答案 1 :(得分:0)
使用以下代码定义选择器并将其作为背景尝试:
<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>
答案 2 :(得分:0)
Itz不是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 \ platforms \ android-8 \ data \ res \ drawable \ btn_default.xml