2

我希望中的每个偶数项目都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>

现在它适用于 Jelly Bean 而不适用于 Gingerbread。有什么想法吗?

4

2 回答 2

0

现在它适用于 Jelly Bean 而不适用于 Gingerbread。有什么想法吗?

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

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

于 2013-08-05T01:49:30.767 回答
0

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

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

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

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

教程

所以问题

于 2012-08-20T16:45:38.040 回答