使用ListActivity时,setSelector会导致意外行为

时间:2011-11-17 03:34:09

标签: android listactivity

我正在尝试在选中项目时设置项目的颜色。即,我的列表通常是灰色的,但我希望用户选择的项目在按下时会发黄。

onCreate方法中,我尝试使用getListView().setSelector(R.xml.list_pressed)

然而,这表明改变整个列表的背景颜色而不是单个元素的奇怪行为!我很难过为什么会这样。

ListActivityTabActivity的一部分,如果这有所不同。

感谢。

编辑:这是list_pressed.xml

<?xml version="1.0" encoding="UTF-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:state_enabled="false"
        android:drawable="@color/darkgray" />
    <item
        android:state_pressed="true"
        android:drawable="@color/yellow" />
    <item
        android:state_focused="true"
        android:drawable="@color/darkgray" />
</selector>

2 个答案:

答案 0 :(得分:1)

您没有android:state_pressed="false"

的州

你可能在android:state_enabled="false"犯了一个错误,你的xml应该这样读:

<?xml version="1.0" encoding="UTF-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:state_pressed="false"
        android:drawable="@color/darkgray" />
    <item
        android:state_pressed="true"
        android:drawable="@color/yellow" />
</selector>

答案 1 :(得分:0)

我发现了这个问题。事实证明我已经为xml文件中的每个项目设置了背景颜色,并且选择器不会覆盖它。用list_pressed替换背景作为drawable修复了问题。我很惊讶我之前没有注意到这一点。 &GT; _&LT;