我已经查看过很多SO问题而无法解决这个问题。我已设法使用选择器来更改ListView的hilighting颜色 - 但如何设置正常(非按下)背景颜色?
下面的XML不起作用,因为只有在按下项目后才将我的行项目背景更改为黑色。我该怎么做?
<selector xmlns:android="http://schemas.android.com/apk/res/android"
android:exitFadeDuration="@android:integer/config_mediumAnimTime">
<item android:state_focused="true" android:drawable="@color/row_hilight"/>
<item android:state_pressed="true" android:drawable="@color/row_hilight"/>
<item android:state_pressed="false" android:drawable="@color/black"/>
</selector>
答案 0 :(得分:1)
最后再添加一个项目:
<item android:drawable="@color/default_color"/>
来自state list drawables的文档:
在每次状态更改期间,状态列表从上到下遍历 并且使用与当前状态匹配的第一个项目 选择不是基于“最佳匹配”,而只是第一项 符合国家最低标准。
因此,如果没有其他项目,则拥有没有特定条件的项目将匹配。
答案 1 :(得分:1)
您需要拥有一个没有状态的默认状态。
此外,您需要删除android:state_pressed="false"
,因为它具有与默认状态相同的功能。
<selector xmlns:android="http://schemas.android.com/apk/res/android"
android:exitFadeDuration="@android:integer/config_mediumAnimTime">
<item android:state_focused="true" android:drawable="@color/row_hilight"/>
<item android:state_pressed="true" android:drawable="@color/row_hilight"/>
<item android:state_pressed="false" android:drawable="@color/black"/> //delete this
<item android:drawable="@color/black"/> //add this
</selector>
答案 2 :(得分:0)