我遇到了一个问题:我有一个带有MULTI_CHOICE监听器的ListView,可以打开ContextualActionBar。对于此列表中的每个项目,我已在根布局上设置了背景。这是XML:
<item android:drawable="@color/light_blue_alpha"
android:state_activated="true"/>
<item android:drawable="@color/light_blue"
android:state_pressed="true"/>
<item android:drawable="@drawable/card_background"/>
在这种情况下,默认背景是卡片布局(基本上是白色)。按下该项目时,背景为全亮蓝色。当激活(通过CAB选择)时,背景是浅蓝色,具有0.5α。
这是发生的事情:
我启动了CAB。如果我在CAB期间选择了一个新项目,则该项目的背景会更改为light_blue
(按下时)。当我松开手指时,它会变为默认背景card_background
。几毫秒后它被激活,然后变为light_blue_alpha
所以基本上我得到了这种闪烁的蓝白蓝色。我想要实现的是&#34;删除&#34;白色背景交易。例如,我看到Gmail应用程序完全符合我的要求。
怎么能实现呢?谢谢!!
编辑: 我尝试将所有内容移动到根listSelector。这是选择器:
<item android:state_pressed="true" android:drawable="@color/light_blue"/>
<item android:state_activated="true" android:drawable="@color/light_blue_alpha"/>
<item android:drawable="@android:color/transparent"/>
我还将drawOnTop设置为true,并且正确应用了按下的背景。但是state_activated并没有!当我启动CAB时,该项目返回其默认背景。为什么不采用state_activated背景??
答案 0 :(得分:0)
在名为selected_position的适配器中取一个变量,在此变量中指定选定的位置值。
为适配器调用notifydatasetchanged方法
在get view方法中输入条件如
if(selected_position == position) { 改变列表项的底色 } 其他 { 设置默认背景颜色 }
希望这有帮助