Android:禁用listView上的突出显示单击

Joh*_*itt 297 android highlighting android-listview

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

android:focusable="false"
android:focusableInTouchMode="false"
android:clickable="false"
Run Code Online (Sandbox Code Playgroud)

更多信息:当用户触摸此listView对象的屏幕时,我希望零差异.

Rof*_*ion 664

将其添加到您的xml:

android:listSelector="@android:color/transparent"
Run Code Online (Sandbox Code Playgroud)

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

您可以将ColorStateList应用于TextView.

  • 从Java Code,你可以做`listView.setSelector(android.R.color.transparent);` (40认同)
  • 如果透明仍然使选择变暗一点,也许它没有被定义为完全透明.尝试#00000000,这是完全不可见的. (2认同)

Mus*_*eel 189

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

<ListView 
android:listSelector="@android:color/transparent" 
android:cacheColorHint="@android:color/transparent"
/>
Run Code Online (Sandbox Code Playgroud)


Che*_*mon 101

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

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

请参阅此简短快速的解决方案/sf/answers/856979511/


emd*_*og4 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; 
    } 
}; 
Run Code Online (Sandbox Code Playgroud)

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

  • 这是一个很好的解决方案,因为列表视图项是否突出显示更多的是行为问题而不是审美问题.因此,您可以将此用于您不希望具有可选属性的列表视图.全局风格并没有多大意义,因为你知道你最终会想要一个*可以*被选中的列表视图,并且使用样式来表达我的行为似乎是错误的.它们不应该具有语义,只有美学.可选性的属性是语义的东西. (6认同)
  • 无效,禁用了项目的选择行为(OnItemClicked不会触发) (4认同)

she*_*tal 38

将此添加到ur XMl以及listselector ..hope它将工作

<ListView
android:cacheColorHint="@android:color/transparent"
android:listSelector="@android:color/transparent"/> 
Run Code Online (Sandbox Code Playgroud)

  • 非常感谢.我想解决滚动时整个listView被强调(在我的情况下为白色)的问题(仅在Android 2.3之前发生).它的工作原理. (2认同)

Lib*_*bin 32

如果您正在使用ArrayAdapterBaseAdapter填充列表项.OverrideisEnabled方法和回报false.

 @Override
  public boolean isEnabled (int position) {
    return false;
  }
Run Code Online (Sandbox Code Playgroud)


小智 13

在虚拟和真实设备上进行了一些'google'和测试后,我注意到我的下面代码有效:

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

注意我省略了这areAllItemsEnabled()部分.


Dmi*_*kov 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>
Run Code Online (Sandbox Code Playgroud)

layout.xml:

android:listSelector="@drawable/transparent_drawable"
Run Code Online (Sandbox Code Playgroud)


小智 7

在代码中

listView.setSelector(getResources().getDrawable(R.drawable.transparent));
Run Code Online (Sandbox Code Playgroud)

并将小透明图像添加到可绘制文件夹.

喜欢:transparent.xml

<?xml version="1.0" encoding="utf-8"?>    
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <solid android:color="#00000000"/>
</shape>
Run Code Online (Sandbox Code Playgroud)


erd*_*ter 5

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


小智 5

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


Nat*_*ali 5

作为备选:

listView.setSelector(android.R.color.transparent);
Run Code Online (Sandbox Code Playgroud)

或者

listView.setSelector(new StateListDrawable());
Run Code Online (Sandbox Code Playgroud)