【问题标题】:Android CAB listview state_selected and state_pressedAndroid CAB listview state_selected 和 state_pressed
【发布时间】:2014-11-26 07:32:39
【问题描述】:

我有一个问题:我有一个带有 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 alpha 的浅蓝色。

这是正在发生的事情: 我启动了驾驶室。如果我在 CAB 期间选择了一个新项目,该项目将其背景更改为 light_blue(按下时)。当我松开手指时,它会变为默认背景card_background。几毫秒后它被激活,然后变为light_blue_alpha

所以基本上我得到了这种闪烁的蓝白蓝。我想要实现的是“删除”白色背景事务。例如,我看到 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后台??

【问题讨论】:

  • 你能附上what is happeningwhat you want to acheive :)
  • 没错。但我可以做到这一点。问题是当我在项目上松开手指时,项目会退回到其默认背景,并在几毫秒后被激活,因此它会进入激活的背景。我想禁用或隐藏手指释放效果。我希望该项目直接从按下的背景转到激活的背景

标签: android android-listview android-selector android-contextmenu


【解决方案1】:

在适配器中取一个名为 selected_position 的变量,在该变量中分配选定的位置值。

为适配器调用 notifydatasetchanged 方法

在get view方法中放置条件

if(selected_position == 位置) { 更改列表项的背景颜色 } 别的 { 设置默认背景颜色 }

希望对你有帮助

【讨论】:

  • mmh.. 我真的需要动手处理 Java 代码吗?如果我没有找到任何解决方案,我会选择这个
猜你喜欢
  • 1970-01-01
  • 2011-12-25
  • 1970-01-01
  • 2017-03-06
  • 2012-11-28
  • 1970-01-01
  • 1970-01-01
  • 2012-12-23
  • 2012-12-21
相关资源
最近更新 更多