Android listview 不再突出显示单击时的选择

Posted

技术标签:

【中文标题】Android listview 不再突出显示单击时的选择【英文标题】:Android listview no longer highlights selection onclick 【发布时间】:2011-10-28 11:30:47 【问题描述】:

我有一个列表视图,当我触摸它们时,它在项目上显示为黄色。我所做的不同之处是更改该 listview xml 中的背景图像,现在它不再向我显示黄色

这里是代码

列表视图xml,它只是一个带有背景图像的文本视图:

<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_ android:layout_
    android:padding="10dp"
    android:textSize="24sp"
    android:textColor="#000000"
    android:background="@drawable/bglistitem"
    android:gravity="center_vertical|center_horizontal">
</TextView>

另一个布局中调用它的地方

<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_ android:layout_
    android:padding="10dp"
    android:textSize="24sp"
    android:textColor="#000000"
    android:background="@drawable/bglistitem"
    android:gravity="center_vertical|center_horizontal">
</TextView>

这里是代码:

lv.setOnItemClickListener(new OnItemClickListener() 
    public void onItemClick(AdapterView<?> arg0, View arg1,int arg2, long arg3) 
);

正如你在上面看到的,我从来没有做任何会改变选择突出显示的默认行为的事情,为什么现在会有所不同,也许你看到了我没有看到的东西?

【问题讨论】:

【参考方案1】:

当您向 ListView 添加新背景时,您会覆盖最有可能使用选择器根据状态为 ListItem 着色的 androids 默认背景。

尝试使用自定义选择器

创建一个 XML 文件 mycustombackground.xml,并将其添加到其中:

<?xml version="1.0" encoding="utf-8"?>
 <selector xmlns:android="http://schemas.android.com/apk/res/android">
   <item android:state_pressed="true"
      android:drawable="@drawable/item_pressed" /> 
   <item android:state_focused="true"
      android:drawable="@drawable/item_focused" /> 
   <item android:drawable="@drawable/item_normal" /> 
 </selector>

将@drawables 替换为与状态相关的您自己的。 然后将listview的背景设置为xml文件。

android:background="@drawable/mycustombackground" 

您可能想查看 XML 以创建黄色,或者只是创建自己的图像。

【讨论】:

我想通了,感谢您的洞察力,帮助我缩小了可能性。事实证明,如果图像中有任何 alpha,那么黄色突出显示就会发生。如果您有不透明的图像,则它不会突出显示

以上是关于Android listview 不再突出显示单击时的选择的主要内容,如果未能解决你的问题,请参考以下文章

在android的listview中突出显示所选项目

Android ListView 突出显示会导致奇怪的行为

Listview 项目在单击时突出显示(不需要)

Android:无需点击即可在Listview上设置焦点突出显示

删除 ListView 中所有项目的 onClick 突出显示

如何强制 ListView 忽略单击/不突出显示单击的项目?