我有一个ListView,我希望它的项目背景在按下项目时变为绿色,当我松开手指时保持灰色。 我使用选择器( listview_item_indicator.xml )来实现此目的:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@color/grey" android:state_selected="true" ></item>
<item android:drawable="@color/green" android:state_pressed="true"></item>
</selector>
然后我更新ListView项目的xml文件以应用此selecor,如下所示:
android:background="@drawable/listview_item_indicator"
结果是当我按下项目时它会变成绿色,但当我松开手指时它会变成灰色(它在我按下它之前转向它)。我认为这意味着{{1}工作,但<item android:drawable="@color/green" android:state_pressed="true"></item>
没有用。为什么?
答案 0 :(得分:1)
state_selected
可通过轨迹球或d-pad
我认为您指的是API 11 state_activated
请参阅:http://developer.android.com/guide/topics/resources/drawable-resource.html#StateList
编辑: 你还需要:
1)将列表视图设置为单选:
<ListView
android:choiceMode="singleChoice" />
2)使用listView.setItemChecked(index, true);
答案 1 :(得分:0)
您应该使用android:listSelector
代替android:background
答案 2 :(得分:0)
定义默认状态。
试试这个选择器:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@color/grey" android:state_selected="true" ></item>
<item android:drawable="@color/green" android:state_pressed="true"></item>
<item android:drawable="@color/white" ></item>
</selector>