【问题标题】:Setting list item background color loses highlighting设置列表项背景颜色失去突出显示
【发布时间】:2011-03-24 21:32:12
【问题描述】:

我创建了一个收件箱 Activity,我正在镜像 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 设备具有某种滚动功能,您可以使用它),列表项会变成黄色,就像它们有焦点一样。

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

感谢您的帮助

【问题讨论】:

    标签: android listview highlight listactivity background-color


    【解决方案1】:

    这是因为高亮显示在列表项的后面。您需要为项目的背景创建一个可绘制的状态列表,在选定状态下将背景颜色设置为透明。如果您查看我在 Google I/O 2010 上发表的关于 ListView 的演讲,您将获得一个如何做到这一点的示例。

    【讨论】:

    • 我去看看。我现在正在 YouTube 上观看您的“Google I/O 2010 - ListView 的世界”视频。感谢指导
    • 我相信 31:43 的视频是我需要的。该xml文件应该放在哪里? res/selector/myselector.xml?
    • 我的一切运行良好。感谢您的帮助并抽出宝贵时间帮助 Android 社​​区。​​span>
    【解决方案2】:

    根据 Romain Guy 的建议,我在 YouTube 上观看了“Google I/O 2010 - ListView 的世界”视频。大约在 31 点 43 分左右,他发布了一个解决这个问题的 sn-p 代码。不过,您必须进行一些修改(我正在针对 2.1 进行开发)。首先,您必须在选择器标记中声明 xmlns:android 参数。在您的 Java 代码中,您必须调用 convertView.setBackgroundResource(R.drawable.yourselector),而不是 setBackground(它似乎不再存在)。

    【讨论】:

      猜你喜欢
      • 2014-03-14
      • 1970-01-01
      • 1970-01-01
      • 2013-09-29
      • 2012-01-08
      • 2012-07-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多