Android列表视图整个列表被选中

时间:2012-06-12 00:39:36

标签: android listview

我似乎遇到了listview的UI问题。我有一个列表视图并选择列表中的任何项目,突出显示整个列表视图。选择工作正常,我在监听器中得到正确的项目。

但问题是,当我选择任何项目时,整个列表视图会突出显示,因此很难判断哪一行被选中。

这在Android> 3.1上运行正常 - 目前我正在2.3设备上进行测试。

<ListView
        android:id="@+id/myList"
        android:layout_width="match_parent"
        android:layout_height="300dp"
        android:layout_marginTop="@dimen/margin_medium"
        android:background="@drawable/border"
        android:listSelector="#99000000"
        android:scrollbarFadeDuration="1000000"
        android:scrollbars="vertical" >
    </ListView>

3 个答案:

答案 0 :(得分:26)

我最近有同样的问题,但原因是在Android&lt; 3.0 bug:如果你将@color设置为列表项按下选择器的drawable,那么它将填充整个列表区域。解决方案是使用'shape'drawable而不是@color。

因此,在具有类似内容的res/drawable文件夹中创建一个新的XML文件:

<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">

    <solid android:color="@color/my_list_item_pressed_color" />
</shape>

ListView的{​​{1}}选择器中为state_pressed创建了drawable(也在res/drawable文件夹中创建为XML文件):

<selector xmlns:android="http://schemas.android.com/apk/res/android" >
    <item android:state_pressed="true" android:drawable="@drawable/list_item_pressed_bg" />
    <item android:drawable="@android:color/transparent" />
</selector>

ListView

中使用此选择器
<ListView
    .....
    android:listSelector="@drawable/list_item_selector" />

这就是全部。至少适用于Android 2.2-2.3。

答案 1 :(得分:1)

如果您不想更改选择器,您还可以将其设置为列表项布局的背景,而不是ListView的listSelector字段。触摸时列表项会收到“选定”状态,并且颜色显示正确。

适用于所有Android版本。

例如:这是您的列表项目布局

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:background="@drawable/background_color">
<TextView
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="Your text here" />
</LinearLayout>

您的列表没有列表选择器:

<ListView
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" />

答案 2 :(得分:-3)

我通过删除这一行来解决这个问题:(不确定它为什么会起作用)

机器人:listSelector = “#99000000”