图库/适配器视图儿童绘制对象国
-
27-09-2019 - |
题
我使用一个廊视图,其中对应于每个项目的视图是非平凡和由文本以及多个按钮。
当我点击拖动图库视图(未某处上的按钮中的一个)按钮的绘制状态改变到被按压,并显示为如果所有的按键的当前正在按压。此外,相同的行为发生用于选择状态(例如所有子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;
}
这将仍然允许自定义库的孩子正确地接收单击事件和刷卡/扔按预期工作。
不隶属于 StackOverflow