2010-08-03 83 views
1

我创建了一个收件箱活动,并且镜像了Android自带的默认邮件应用程序的某些功能。设置列表项背景颜色丢失突出显示

在Mail中,未读取的消息的背景颜色比列表中其余项的颜色浅。我通过在我的Adapter的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设备具有某种滚动功能,则使用该功能),则列表项将变为黄色,因为它们具有焦点。

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

感谢您的帮助

回答

2

Per Romain Guy的建议是,我在YouTube上观看了“Google I/O 2010 - ListView的世界”视频。在分钟31:43左右,他发布了解决这个问题的代码片段。你必须做一些修改,但是(我正在开发2.1)。首先,您必须在选择器标签中声明xmlns:android参数。在你的Java代码中,你必须调用convertView.setBackgroundResource(R.drawable.yourselector),而不是setBackground(它不再显示存在)。

7

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

+0

我来看看。我现在在YouTube上观看您的“Google I/O 2010 - ListView世界”视频。感谢您的方向 – Andrew 2010-08-03 19:40:19

+0

我确实认为该视频的31:43是我所需要的。那个XML文件应该在哪里? RES /选择/ myselector.xml? – Andrew 2010-08-03 20:31:19

+0

我拥有一切正常工作。感谢您的帮助,并花时间帮助Android社区。 – Andrew 2010-08-03 21:38:59