我使用一个廊视图,其中对应于每个项目的视图是非平凡和由文本以及多个按钮。

当我点击拖动图库视图(未某处上的按钮中的一个)按钮的绘制状态改变到被按压,并显示为如果所有的按键的当前正在按压。此外,相同的行为发生用于选择状态(例如所有子TextViews的文本的颜色变化)。

我想阻止这一行为,并已发现了android:duplicateParentState XML属性还有setDuplicateParentStateEnabled财产。这似乎像它应该做到什么,我试图做的,但它似乎没有任何效果。

任何想法?

有帮助吗?

解决方案 2

不知道在哪里的duplicateParentState产权进场,而是通过源显示,这是从来没有考虑选定和压入状态打破。我想起来创建自定义视图类并覆盖dispatchSetSelected和dispatchSetPressed方法。

其他提示

也许有点就在身边晚,但已经遇到这个问题我自己最近我有一个修补程序。

dispatchSetSelected和dispatchSetPressed真的不帮助这里,因为你确实需要覆盖的方法内廊是私有的。

的解决方案是添加一个额外的布局(I使用的LinearLayout的子类)周围的子图,该覆盖setPressed(布尔值)和简单地忽略它。这防止了从图库迫使对孩子其按下状态,同时仍然允许这些儿童直接激活,而不是从被向上传播停止事件。

如果你碰巧从库扩展到创建它自己的定制版本,你可以简单地做:

  @Override
  public boolean onDown(MotionEvent e) {
    // Ignore onDown events in order to avoid having every child's state set to 'pressed'
    return true;
  }

这将仍然允许自定义库的孩子正确地接收单击事件和刷卡/扔按预期工作。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top