单击时仅使ListView元素的一部分更改

时间:2013-12-20 22:04:28

标签: java android xml android-listview

我觉得很难向搜索引擎或任何人解释我的问题。我会尽力解释它。我有一个ListView,我为ListView中的元素制作了自定义视图。这是XML:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">

<TextView
    android:id="@+id/text1"
    android:layout_width="match_parent"
    android:layout_height="@dimen/list_item_height"
    android:layout_alignParentTop="true"
    android:layout_centerHorizontal="true"
    android:singleLine="true"
    android:ellipsize="marquee"
    android:textColor="@color/black"
    android:gravity="center"
    android:background="@drawable/spinner_dropdown_style"/>

<View
    android:id="@+id/divider"
    android:layout_width="fill_parent"
    android:layout_height="5dp"
    android:layout_alignParentLeft="true"
    android:layout_below="@+id/text1"
    android:background="@drawable/shadow" />

</RelativeLayout>

这就是ListView的样子:

enter image description here

正如您所看到的,分隔符始终为灰色,但单击ListView元素时,分隔符将变为蓝色。这就是问题。我只希望元素的白色部分变为绿色,灰色分隔线保持灰色。

这是spinner_dropdown_style(选择器):

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

如何制作选择器只能在白色区域上工作,灰色分隔线即使在点击元素时也会保持灰色?

3 个答案:

答案 0 :(得分:0)

添加到xml中的列表视图:

android:drawSelectorOnTop="false"
android:cacheColorHint="#00000000"

答案 1 :(得分:0)

ListView有自己的选择器,适用于所选项目。您只是切换TextView的背景,而不是整个选定的项目。为此,您可以尝试将其添加到列表视图中:

android:drawSelectorOnTop="true"
android:listSelector="@color/button_color_pressed"

答案 2 :(得分:0)

在列表视图中添加android:divider="@layout/id of layout"这一行

制作另一个布局

<View android:id="@+id/divider" android:layout_width="fill_parent" android:layout_height="5dp" android:layout_alignParentLeft="true" android:layout_below="@+id/text1" android:background="@drawable/shadow" />

添加删除元素。

希望这会有所帮助