2010-03-25 69 views
2

我试图通过分别将其可见性属性设置为“可见”和“无效”来交换两个LinearLayouts。我正在使用动画,而布局正在交换。动画成功完成,我看到了正确的布局。但是,将其可见性属性设置为“GONE”的以前版式仍然会收到点击,即使它不可见。同时,只有在“GONE”布局不可点击的区域点击时,“可见”布局才会收到点击。我也在“可见”布局上调用requestFocus方法。但它没有帮助。此外,如果我跳过动画部分并仅设置可见性属性,则一切正常。Android LinearLayout动画可见性问题

我在这里错过了什么?

回答

2

如果您在动画化小部件,您需要对布局进行更改以使结果“坚持”。只要使用fillAfter的东西就会给你一些你看到的效果 - 它将它们绘制在新的位置,但它们并不是真的的新位置。

因此,我会先关闭动画中的任何fill*设置(例如,fillAfter)。看看你的动画的行为如何。最有可能的是,它现在将描绘点击告诉您的内容。

然后,设置一个AnimationListener以在动画结束时获得控制权,并在此时对小部件及其容器进行实际更改以影响您的最终位置。

Here is a sample project这证明了我的意思,虽然过于复杂的时尚,因为我动画自定义视图,而不是一个现成的小部件。

+0

很酷。我从我的动画中删除了setFillAfter(true)。它的工作!我仍然不清楚什么setfillAfter实际上做。您提供的示例项目似乎来自您的书。前几天我正在经历它,演示没有奏效。今晚我会再试一次,以便更好地了解这个问题。谢谢您的帮助。 – adityad 2010-03-25 19:08:18

+0

这个样本最后一次工作,我尝试了... – CommonsWare 2010-03-25 19:20:41