我想禁用当触摸listView行时出现的橙色高亮。到目前为止,在我的xml我已经尝试了以下:

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

更多信息:我希望当用户在这个listView对象上触摸屏幕时,没有任何差异。


当前回答

没有什么能帮助我,只有这个:

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上的一个样式。本文很好地概述了如何重写listView样式。

从本质上讲,您有一个选择器,它根据当前状态指定不同的样式元素。

请看这个简短而快速的解决方案https://stackoverflow.com/a/12242564/185022

你可以从onItemClick中获得pos 和做的事:

listView.setItemChecked(pos, false);

这是我知道的最好的方法

在代码中

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>

把这个添加到你的xml中:

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

对于这个问题,这可能会起作用(我不确定,我不知道是否有更好的解决方案):

你可以应用一个ColorStateList到你的TextView。

从ListView禁用焦点高亮,

当你设置你的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类。它还取消了单元格之间的白色边界。