Android ListView行背景颜色

时间:2014-06-10 02:23:14

标签: android xml listview

我已经查看过很多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>

3 个答案:

答案 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)

使用自定义适配器制作自定义列表视图:

Custom Adapter for List View

这是你可以在getView中使用你想要的背景视图