12

我似乎遇到了列表视图的 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>
4

3 回答 3

26

我最近遇到了同样的问题,但原因在于 Android < 3.0 的错误:如果您将 @color 设置为列表项按下选择器的可绘制对象,那么它将填充整个列表区域。解决方案是使用“形状”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并参考在您的选择器中创建的可绘制对象state_pressed(也在文件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。

于 2013-01-29T18:50:43.253 回答
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" />
于 2013-04-11T17:56:45.743 回答
-3

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

安卓:listSelector="#99000000"

于 2012-06-14T00:35:21.820 回答