android–animateLayoutChanges与嵌套布局不兼容?

android–animateLayoutChanges与嵌套布局不兼容?,第1张

概述我有一个嵌套布局,如下所示:<LinearLayout><!----Parentlayout---><LinearLayout><!-----child1--->...</LinearLayout><!----child1ended---><LinearLayout><!-----child2--->

我有一个嵌套的布局,如下所示:

 <linearLayout>     <!----Parent layout--->    <linearLayout>    <!-----child 1--->       ...    </linearLayout>   <!----child 1 ended--->    <linearLayout>    <!-----child 2--->       ...    </linearLayout>   <!----child 2 ended---> </linearLayout>    <!----Parent endded--->

我现在遇到的问题是,由于我的所有数据项都在子项1或子项2 linearlayout中,如果我添加或删除项目,子行为布局将使用animateLayoutChanges的效果进行动画处理,但父布局不会执行任何动画. (对于所有线性布局,我将androID:animateLayoutChanges设置为true).特别是当我删除子1中的项目时,动画效果变得怪异(基本上,当孩子1仍然在做动画时,孩子2会跳起来).

有谁知道如何解决这个问题?

谢谢

UPDATE

在我发布这个问题后不久,我在LayoutTransition API的androID开发者网站上发现了这个问题.

Using LayoutTransition at multiple levels of a nested vIEw hIErarchy may not work due to the interrelationship of the varIoUs levels of layout.

那么有没有人有任何关于这个问题的建议呢?

解决方法:

animateLayoutChanges属性使用LayoutTransitions,它可以为布局的子项设置动画,从AndroID 4.0开始,将布局层次结构中的祖先一直设置为树的顶部.在Honeycomb中,只有布局的孩子才会被动画化.有关详情,请参见this Android Developers Blog post.

不幸的是,似乎目前没有简单的方法让布局的兄弟对其LayoutTransitions作出反应.您可以尝试使用TransitionListener在更改布局边界时收到通知,并使用Animators相应地移动兄弟视图.请参阅Chet Haase在this Google+ post的第二个答案.

编辑 – 结果有一种方法.在AndroID 4.1(API级别16)中,您可以使用布局转换类型CHANGING,默认情况下禁用.要在代码中启用它:

VIEwGroup layout = (VIEwGroup) findVIEwByID(R.ID.yourLayout);LayoutTransition layoutTransition = layout.getLayoutTransition();layoutTransition.enableTransitionType(LayoutTransition.CHANGING);

因此,在您的示例中,要将子2布局设置为动画,您需要为其启用CHANGING布局转换.然后,当其父级的边界发生变化时,将应用转换.

有关详细信息,请参见this DevBytes video.

总结

以上是内存溢出为你收集整理的android – animateLayoutChanges与嵌套布局不兼容?全部内容,希望文章能够帮你解决android – animateLayoutChanges与嵌套布局不兼容?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1100703.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-28
下一篇 2022-05-28

发表评论

登录后才能评论

评论列表(0条)

保存