gpt4 book ai didi

android - animateLayoutChanges 不适用于嵌套布局?

转载 作者:IT王子 更新时间:2023-10-29 00:01:18 24 4
gpt4 key购买 nike

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

 <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)。尤其是当我删除 child 1 中的一个项目时,动画效果变得很奇怪(基本上 child 2 会跳起来,而 child 1 仍在做动画)。

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

谢谢

更新

在我发布这个问题后不久,我在 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了解详情。

不幸的是,目前似乎没有简单的方法可以让布局的 sibling 对其LayoutTransitions 使用react。您可以尝试使用 TransitionListener 在布局边界发生更改时获得通知,并使用动画器相应地移动同级 View 。请参阅 Chet Haase 在 this Google+ post 中的第二个答案.

EDIT - 原来是 一种方法。在 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 不适用于嵌套布局?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20103888/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com