我试图通过将它们的可见性属性分别设置为“VISIBLE”和“GONE”来交换两个线性布局。我也在交换布局时使用动画。动画成功完成,我看到了正确的布局。但是,其可见性属性设置为“GONE”的先前布局仍然会收到点击,即使它不可见。同时,“VISIBLE”布局只有在“GONE”布局不可点击的区域被点击时才会收到点击。我还在“可见”布局上调用 requestFocus 方法。但这无济于事。
此外,如果我跳过动画部分并仅设置可见性属性,则一切正常。
我在这里想念什么?
我试图通过将它们的可见性属性分别设置为“VISIBLE”和“GONE”来交换两个线性布局。我也在交换布局时使用动画。动画成功完成,我看到了正确的布局。但是,其可见性属性设置为“GONE”的先前布局仍然会收到点击,即使它不可见。同时,“VISIBLE”布局只有在“GONE”布局不可点击的区域被点击时才会收到点击。我还在“可见”布局上调用 requestFocus 方法。但这无济于事。
此外,如果我跳过动画部分并仅设置可见性属性,则一切正常。
我在这里想念什么?
如果您正在为小部件设置动画,则需要对布局进行更改以使结果“粘住”。只是使用这些fillAfter
东西会给你一些你看到的效果——它正在将它们绘制在新的位置,但它们并不是真的在新的位置。
因此,我将首先关闭动画中的所有fill*
设置(例如fillAfter
)。看看你的动画表现如何。最有可能的是,它现在将直观地描述点击告诉您的内容。
然后,设置一个AnimationListener
以控制动画何时结束,然后对小部件及其容器进行真正的更改以影响您的结束位置。
这是一个示例项目,它演示了我的意思,尽管以一种过于复杂的方式,因为我正在为自定义视图而不是现成的小部件设置动画。