Android:禁用listView上的高亮点击

我想禁用触摸listView行时发生的橙色突出显示。 到目前为止,在我的XML我已经尝试了以下内容:

android:focusable="false" android:focusableInTouchMode="false" android:clickable="false" 

更多信息:当用户触摸这个listView对象的屏幕时,我想要有零差异。

添加到您的XML:

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

而对于这个问题,这可能工作(我不知道,我不知道是否有更好的解决scheme):

您可以将ColorStateList应用于TextView。

RoflcoptrException的答案应该做的伎俩,但由于某种原因,它不适合我,所以我张贴解决scheme,为我工作,希望它可以帮助某人

 <ListView android:listSelector="@android:color/transparent" android:cacheColorHint="@android:color/transparent" /> 

橙色突出显示效果是ListView上的一种风格 。 这篇文章给出了如何重写listView风格的一个很好的概述。

基本上,你有一个select器,根据当前状态指定不同的样式元素。

看到这个简短和快速的解决schemehttps://stackoverflow.com/a/12242564/185022

来自http://groups.google.com/group/android-developers/browse_thread/thread/03c92af7b519d290?pli=1

当您设置您的ListAdapter使用下面的代码

 ListAdapter adapter = new SimpleCursorAdapter(MyList, Layout, c, new String[] { "Name", "Score" }, to) { public boolean areAllItemsEnabled() { return false; } public boolean isEnabled(int position) { return false; } }; 

这将覆盖BaseAdapter类。 它也取消了单元格之间的白色边框。

添加这也是你的XMl随着listselector ..hope它将工作

 <ListView android:cacheColorHint="@android:color/transparent" android:listSelector="@android:color/transparent"/> 

如果您使用ArrayAdapterBaseAdapter来填充列表项目。 Override isEnabled方法并返回false

  @Override public boolean isEnabled (int position) { return false; } 

在虚拟和真实设备上进行一些“谷歌和testing”之后,我注意到我的下面的代码工作:

 ArrayAdapter<String> myList = new ArrayAdapter<String>(this, R.layout.list_item, strText) { public boolean isEnabled(int position) { return false; } }; 

注意我省略了areAllItemsEnabled()部分。

没有什么可以帮助我,但是

transparent_drawable.xml

 <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android"> <solid android:color="#00000000"/> </shape> 

layout.xml

 android:listSelector="@drawable/transparent_drawable" 

在代码中

 listView.setSelector(getResources().getDrawable(R.drawable.transparent)); 

并添加小的透明图像绘制文件夹。

像:transparent.xml

 <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android"> <solid android:color="#00000000"/> </shape> 

对我来说android:focusableInTouchMode="true"是要走的路。 android:listSelector="@android:color/transparent"是没有用的。 请注意,我正在使用一个自定义列表视图与每行中的一些对象。

你只需要添加: android:cacheColorHint="@android:color/transparent"

作为备选:

 listView.setSelector(android.R.color.transparent); 

要么

 listView.setSelector(new StateListDrawable()); 

如果要禁用单个列表视图项目的突出显示,但保持单元格处于启用状态,请为该单元格设置背景颜色以禁用突出显示。

例如,在你的单元格布局中,设置android:background="@color/white"

你可以得到你从onItemClick获得的pos ,然后执行:

 listView.setItemChecked(pos, false); 

这是我所知道的最好的方式