Gallery/AdapterView子绘图状态

ghe*_*ton 7 viewstate android gallery drawable android-adapterview

我正在使用一个图库视图,其中对应于每个项目的视图是非平凡的,包括文本和多个按钮.

当我单击拖动图库视图(某个位置不在其中一个按钮上)时,按钮的可绘制状态变为按下并显示为当前正在按下所有按钮.此外,对于所选状态会发生相同的行为(例如,子TextView的所有文本都会更改颜色).

我试图阻止这种行为,并找到了android:duplicateParentState xml属性以及setDuplicateParentStateEnabled属性.这似乎应该完成我想做的事情,但似乎没有任何效果.

有任何想法吗?

Adr*_*ian 8

也许有点迟到,但最近我遇到了这个问题,我有一个修复.

dispatchSetSelected和dispatchSetPressed在这里并没有真正帮助,因为您实际需要覆盖的方法在Gallery中是私有的.

解决方案是在子视图周围添加一个额外的布局(我使用了LinearLayout的子类),它覆盖了setPressed(boolean)并简单地忽略它.这可以防止画廊强迫孩子按下它的状态,同时仍然允许直接激活这些孩子,而不是阻止事件向上传播.


ghe*_*ton 3

不确定duplicateParentState属性在哪里发挥作用,但突破源代码表明它从未被考虑到选定和按下状态。我会创建一个自定义视图类并重写dispatchSetSelected 和dispatchSetPressed 方法。