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"/>
如果您使用ArrayAdapter
或BaseAdapter
来填充列表项目。 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);
这是我所知道的最好的方式