Android ListView行背景色



我看了许多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

中使用带有背景的视图

最新更新