我已经创建了一个收件箱活动,并且正在镜像Android随附的默认Mail应用程序的某些功能。

在邮件中,尚未读取的邮件的背景颜色比列表中其余项目的颜色浅。我已经通过在我的适配器的getView方法中设置调用setBackgroundResource来对此进行镜像。 setBackgroundColor不执行任何操作。

        if (!msgSum.getIsRead()) {
            LinearLayout l = (LinearLayout) v.findViewById(R.id.inbox_background);
            if (l != null) {
                l.setBackgroundResource(R.color.inbox_unread);
            }
        }
        else {
            LinearLayout l = (LinearLayout) v.findViewById(R.id.inbox_background);
            if (l != null) {
                l.setBackgroundResource(R.color.inbox_read);
            }
        }


问题在于,这些项目随后失去了突出显示的能力。我的意思是,通常,如果您在使用模拟器时滚动鼠标滚轮(或者如果您的Android设备具有某种滚动功能,则可以使用该滚动条),则列表项会变成黄色,就像它们具有焦点一样。

如何在不失去突出显示列表项的功能的情况下完成我想做的事情?

谢谢你的帮助

最佳答案

这是因为高亮显示在列表项的后面。您需要为项目的背景创建可绘制的状态列表,该状态列表在选定状态下将背景色设置为透明。如果您查找我在Google I / O 2010上发表的有关ListView的讨论,您将获得如何执行此操作的示例。

10-07 20:02
查看更多