gpt4 book ai didi

android - 在 ListVIew 中使用 'changing' LayoutTransition 类型无效

转载 作者:太空狗 更新时间:2023-10-29 14:20:40 27 4
gpt4 key购买 nike

在 Android 中,我目前正在尝试创建一个列表,其项目在单击时改变高度,该项目下方的所有 View 根据高度变化向上或向下设置动画。我成功地将以下代码与 LinearLayout 中的项目“列表”结合使用:

LayoutTransition t = new LayoutTransition();
t.enableTransitionType(LayoutTransition.CHANGING);
myLinearLayout.setLayoutTransition(t);

但是,当我尝试将此 LayoutTransition 应用于 ListView 而不是 LinearLayout 时,被单击项目的高度会发生动画,但它下面的所有项目都会立即跳转到新位置。我怎样才能让其余的 View 与点击的项目一起动画?

最佳答案

你不能轻易做到这一点(但有更好的方法来做到这一点)。 ListView 行的位置由 AdapterView 固定和控制。

我做了一点研究。首先,要触发 CHANGING 动画,您不能像往常一样删除您的行(从适配器中删除该项目)。您必须通过将可见性设置为 GONE 来隐藏您的项目,然后它将触发 DISAPPEARING 动画,从而触发 CHANGING 动画。但是要使更改动画可用,您必须在更改行高时随时请求布局(在 ListView 上)。在动画结束时,您可以从适配器中删除项目并重新绘制 ListView。此外,您可以使行的 ID 与其位置保持稳定,而不重绘所有 ListView。我尝试这样做,但在各种版本的 Android API 上都存在复杂性。

最后,可以使用 LayoutTransition 在 ListView 上实现动画,但这很复杂,从实现的角度来看不值得。它对于简单的情况足够了,但对于 ListView 中更复杂的动画来说就不够了。要实现动画,最好使用已经煮熟的组件: https://github.com/nhaarman/ListViewAnimations

关于android - 在 ListVIew 中使用 'changing' LayoutTransition 类型无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17239151/

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