5

我想禁用当用户从代码中选择一行(listSelector)时出现的突出显示。我不想禁用 onClick 和启用设置(我仍然想听点击,只是想删除突出显示)。

4

5 回答 5

17

android:listSelector="@android:color/transparent"在您的ListViewXML中指定。

于 2013-06-10T22:12:56.000 回答
6

只需创建一个具有透明颜色的可绘制对象,如下所示:

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

<item android:state_window_focused="false" android:drawable="@android:color/transparent"/>

<!-- Even though these two point to the same resource, have two states so the drawable will invalidate itself when coming out of pressed state. -->
<item android:state_focused="true"  android:state_enabled="false" android:state_pressed="true" android:drawable="@drawable/list_selector_disabled_holo_light" />
<item android:state_focused="true"  android:state_enabled="false" android:drawable="@drawable/list_selector_disabled_holo_light" />
<item android:state_focused="true"  android:state_pressed="true" android:drawable="@color/transparent" />
<item android:state_focused="false" android:state_pressed="true" android:drawable="@color/transparent" />
<item android:state_focused="true"  android:drawable="@drawable/list_focused_holo" />

</selector>

然后通过代码或 XML 设置:

listView.setSelector(R.drawable.my_transparent_selector);

此方法的 javadoc 说:

设置一个用于突出显示当前选定项目的 Drawable。

XML 属性是:

安卓:列表选择器

你可以玩所有的状态,记住你也有焦点状态。

于 2013-06-10T21:48:29.813 回答
4

我已经这样做了:

通过添加ListView的两个属性。

android:cacheColorHint="@android:color/transparent"
android:listSelector="@android:color/transparent"

您的 ListView应如下所示:

<ListView
    android:id="@+id/listView"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:cacheColorHint="@android:color/transparent"
    android:listSelector="@android:color/transparent">

</ListView>

完毕

于 2016-02-10T09:38:49.820 回答
1

尝试listview.setSelector(new ColorDrawable(Color.TRANSPARENT));

于 2014-04-25T07:16:23.407 回答
0

高亮效果是 listSelector 上的一种样式。您可以覆盖 listSelector 样式。

这是一个带有列表视图的示例:Android:在列表视图单击时禁用突出显示

于 2013-06-10T21:51:20.217 回答