Android - 禁用ListView选择突出显示但保持OnClick启用

时间:2013-06-10 21:43:02

标签: java android listview

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

5 个答案:

答案 0 :(得分:17)

android:listSelector="@android:color/transparent" XML中指定ListView

答案 1 :(得分:6)

只需创建一个透明色的drawable,如下所示:

<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属性为:

  

机器人:listSelector

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

答案 2 :(得分:4)

我这样做了:

添加 ListView 的两个属性。

SELECT SQL_TEXT
  FROM V$SQL
 WHERE FIRST_LOAD_TIME = (SELECT MAX(FIRST_LOAD_TIME) FROM V$SQL);

您的ListView 应如下所示:

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

完成

答案 3 :(得分:1)

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

答案 4 :(得分:0)

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

这是一个列表视图示例:Android: disabling highlight on listView click