0

我有一个带有自定义分隔线的 ListView。分隔线只是一些颜色,高度为 3dp。我为列表中的每个项目添加了一个自定义选择器,因此单击项目时背景颜色会发生变化。我的选择器如下所示:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">:
    <item android:state_selected="true" android:drawable="@color/yellow" />
    <item android:state_pressed="true" android:drawable="@color/yellow" />
    <item android:drawable="@color/grey" />
</selector>

选择项目时,它会按预期将颜色从灰色变为黄色。但是,列表中所有分隔线的颜色也会发生变化。为什么会这样?我该如何解决?

4

4 回答 4

2

我认为,在您的示例中,您没有在选择器中写入错误状态。这可能是问题所在。尝试编写一个完整的选择器 XML,如下所示;

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">:
    <item android:state_selected="true" android:state_pressed="false" android:drawable="@color/yellow" />
    <item android:state_selected="false" android:state_pressed="true" android:drawable="@color/yellow" />
    <item android:state_selected="false" android:state_pressed="false" android:drawable="@color/grey" />
</selector>
于 2012-08-08T09:54:21.617 回答
0

我会禁用默认分隔线并将自定义分隔线作为列表项背景的一部分(可能使用 9-patch)。

于 2012-08-08T09:56:49.653 回答
0

我确定,但也许您将分隔线设置为相同的可绘制对象,我发布了一个代码,可以帮助您更改分隔线的颜色。像这样的东西。

android:divider="#FFCC00"
android:dividerHeight="4px"
于 2012-08-08T09:52:33.393 回答
0

在 listselector 中添加自定义选择器,例如

<ListView 
   android:layout_width="fill_parent"
   android:layout_height="wrap_content"
   android:listSelector="@drawable/listitem_selector"/>
于 2012-08-08T10:14:56.797 回答