我看了许多SO问题,但不能弄清楚这一点。我已经设法使用一个选择器来改变我的ListView的高亮颜色,但我如何设置正常(非按下)背景颜色?
下面的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>
你需要有一个默认状态,它没有状态。
您还需要删除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>
在结尾再添加一项:
<item android:drawable="@color/default_color"/>
从状态列表drawables的文档:
在每次状态更改期间,将从上到下遍历状态列表并且使用与当前状态匹配的第一个项—选择不是基于"最佳匹配",而只是基于第一项符合该州的最低标准。
因此,如果其他项都不符合特定条件,则没有特定条件的项将匹配。
使用自定义适配器创建自定义listview:
列表视图自定义适配器
这是你可以在getView