310

我想禁用触摸 listView 行时出现的橙色突出显示。到目前为止,在我的 xml 中,我尝试了以下操作:

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

更多信息:我希望用户在此 listView 对象上触摸屏幕时差异为零。

4

15 回答 15

685

将此添加到您的 xml:

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

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

您可以将ColorStateList应用于您的 TextView。

于 2010-05-25T21:00:51.810 回答
190

RoflcoptrException 的回答应该可以解决问题,但由于某种原因它对我不起作用,所以我发布了对我有用的解决方案,希望它对某人有所帮助

<ListView 
android:listSelector="@android:color/transparent" 
android:cacheColorHint="@android:color/transparent"
/>
于 2012-09-03T05:44:24.287 回答
101

橙色高亮效果是ListView 上的 一种样式。本文很好地概述了如何覆盖 listView 样式。

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

请参阅此快速解决方案https://stackoverflow.com/a/12242564/185022

于 2010-05-25T18:32:47.687 回答
63

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

于 2010-11-02T05:06:45.323 回答
39

将此与列表选择器一起添加到您的 XMl 中。希望它会起作用

<ListView
android:cacheColorHint="@android:color/transparent"
android:listSelector="@android:color/transparent"/> 
于 2011-09-16T05:39:51.283 回答
32

如果您正在使用ArrayAdapterBaseAdapter填充列表项。Override方法和isEnabled返回false

 @Override
  public boolean isEnabled (int position) {
    return false;
  }
于 2014-01-19T04:29:33.410 回答
13

在虚拟和真实设备上进行一些“谷歌”测试和测试后,我注意到我的以下代码有效:

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

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

于 2012-02-09T07:26:46.973 回答
11

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

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"
于 2012-06-05T13:14:51.253 回答
7

在代码中

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>
于 2013-04-21T12:24:54.590 回答
6

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

于 2012-03-21T19:31:22.607 回答
5

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

于 2013-03-03T10:59:19.973 回答
5

作为备选:

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

或者

listView.setSelector(new StateListDrawable());
于 2016-09-27T10:41:32.187 回答
1

有一种快速简便的方法可以做到这一点: 在方法中:

private void OnItemSelected(object sender, SelectedItemChangedEventArgs e)
{
    //TODO
    ((ListView)sender).SelectedItem = null;
}

希望它会有所帮助;)

于 2018-01-08T17:15:27.173 回答
0

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

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

于 2016-07-19T15:45:16.897 回答
0

你可以得到pos你从中得到的,onItemClick 然后做:

listView.setItemChecked(pos, false);

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

于 2016-11-02T09:11:17.360 回答