Android ListView背景颜色



我希望ListView中的每个偶数项都是不同的颜色。为此,我使用了以下代码:

public void bindView(View row, Context ctxt, Cursor c) {
            ViewHolder holder = (ViewHolder) row.getTag();
            if (c.getPosition() % 2 == 0) {
                row.setBackgroundDrawable(getResources().getDrawable(
                        R.drawable.dark_item_background));
            }
            holder.populateFrom(c, mDbHelper);
        }

但在触摸事件之后,该项目不会突出显示。请建议如何克服这个问题。

更新

根据Gophermofur的建议,我创建了一个选择器:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/list_activated_holo" android:state_activated="true"/>
    <item android:drawable="@color/item_back_color"/>
</selector>

现在它对果冻豆有效,对姜饼无效。有什么想法吗?

列表视图中的项目实际上并没有定义为纯色(黑色或白色),而是使用选择器定义的,其中不同状态有多种颜色(正常=黑色、按下=橙色、聚焦=蓝色等)。

当您开始用纯色替换列表视图中项目的背景色时,它会覆盖该选择器,因此不同状态不再有不同的颜色。

通常情况下,listview选择器应用于整个listivew,但是,您可以将其直接应用于项目的背景或选择器(我不确定,目前无法测试)。

看看这些链接,了解如何创建选择器XML文件:

教程

SO问题

现在它对果冻豆有效,对姜饼无效。有什么想法吗?

我不确定你的drawable/list_activated_holo是什么,但从它的名字来看,它听起来像是在使用android holo主题——这只是在API 14级中添加的。http://developer.android.com/design/style/themes.html

如果您想在运行低于API 14级的设备上使用颜色,则需要在自己的值/colors.xml中定义颜色。

最新更新