我创建了一个自定义View,它本质上是一个Gallery对象,可以通过单击TextView来隐藏和显示(使用View.VISIBLE和View.GONE)。
我放置在此库中的图像具有自定义背景StateListDrawable选择器。一切正常,但是当图库从View.GONE变为View.VISIBLE时,画廊中的图像状态似乎会丢失,并且绘制的选择器是默认的drawable(translucent_box)。
这些是我的选择器XML中的项目:
<item android:drawable="@drawable/red_box" android:state_pressed="true" /> <item android:drawable="@drawable/orange_box" android:state_selected="true" android:state_focused="true" /> <item android:drawable="@drawable/blue_box" android:state_selected="true" /> <item android:drawable="@drawable/translucent_box" />
最奇怪的是,从调用startActivity返回后,状态恢复,一切正常,直到我隐藏并再次显示画廊。
我尝试过在选择器中添加不同的状态并以编程方式尝试刷新视图......但无济于事。
有什么想法吗?我敢肯定它必须是微不足道的......
提前致谢!
答案 0 :(得分:0)
我不确定它是否相关 - 但是你需要实现View.verifyDrawable吗?关于何时需要这样做,文档并不十分清楚。
startActivity将默认触发动画 - 这可能是强制视图正确刷新的原因。另一个可能的黑客攻击是触发某种空动画。
答案 1 :(得分:0)
我能够为我的案例找到解决方法。我不确定这是最好的方式,我仍然不知道是什么导致了这种行为,但我能够通过在我的图库适配器上调用notifyDataSetChanged()来获得我想要的东西。
如果有人对如何解决这个问题有更好的建议(我觉得这可能有点矫枉过正),或者甚至描述为什么会这样,我会很感激...我很好奇什么是在幕后进行。