我有一个由定制的 ArrayAdapter 支持的 ListView,其中每个项目都有 2 个 LinearLayouts - 一个我称为 head,另一个称为 body。正文被隐藏(消失),直到用户单击它滑出的行。第二次点击(在头部)将隐藏身体。但是,如果用户点击身体,它会带来另一个活动。所有这些都很好,问题来了:
当用户按下身体时,我想要一个动作的视觉指示,就像普通列表项在按下时会闪烁橙色背景一样。默认情况下我没有得到这个,因为(我的理论)onPress 事件被正文的视图拦截并且没有被列表项处理。
我尝试的第一件事是body.setBackground('#ff00ff')
在 onPress 事件中执行(不管颜色)。这不起作用,因为(我怀疑)通话后没有重新粉刷。然后我再挖掘一点,并决定使用<selector/>
基于 - 的背景。我body_background.xml
在drawable
文件夹中定义并将其分配给正文的背景属性。
在那里我注意到只有当列表处理了偶数时,背景才会改变。例如,如果我设置<item android:state_selected="true" android:drawable="@drawable/selected"/>
然后当我按下头部时 - 两个元素(头部和身体)的背景都会改变,但是当我按下身体时 - 什么都没有。
所以总结一下我的问题 - 如果我为其分配自定义 onClick 处理程序,如何更改列表项中子元素的背景?任何提示将不胜感激