当前位置: 首页 > 知识库问答 >
问题:

RecyclerView删除动画错误

卢知
2023-03-14

我已经实现了一个回收视图,可以在其中添加和删除项目。我希望添加的项目添加到第二个位置,并且每当我添加新项目时,动画运行良好。也就是说,最后一个项目向下移动,让新项目的空间淡入。

当我删除一个项目时,有一个问题我不知道如何解决。我希望它的行为是:

    < li >淡出删除的元素, < li >向上移动它下面的所有项目。

实际发生的事情是,首先,最后一项消失,然后动画的其余部分发生。当已删除元素下方的项目向上移动时,最后一个项目将重新显示为来自墙后。

对我来说,似乎RecyclView收缩到“post-动画”高度,然后执行动画。

我还没有定义ItemAnimator,所以DefaultItemAnimator必须是使用的那个。我看过这个视频,并在LinearLayoutManager的自定义实现中覆盖了support portsPredictiveItemAnimations方法,但它没有修复它。

共有2个答案

姚向晨
2023-03-14

也许有点晚了,但在我的情况下,我通过将RecyclerView项animator设置为null,然后在适配器的<code>setList(list)

Transition transition = new AutoTransition();
transition.setDuration(200); // Or any duration you want
TransitionManager.beginDelayedTransition(mRootViewGroup, transition);

其中 mRootViewGroup 是包含 RecyclerView 的视图组。

这个问题也可以通过将layout_height(或宽度,取决于滚动方向)设置为wrap_content以外的东西来解决,但是如果像我一样,您需要将回收器视图高度设置为wrap_content,这可能是您的解决方案。

不确定这是否也能解决你的问题,但是我想我还是分享一下对我有效的方法吧。

仲孙俊贤
2023-03-14

我已经在这里通过Google Issue Tracker报告了这个问题

我希望我们能尽快解决!正如您所说,这似乎与recyclerview的度量更新和动画之间可能存在的竞争条件密切相关,当您的recyclerview包装其内容以计算其高度时。

这篇文章也非常详细地解释了这个问题。

 类似资料:
  • 问题内容: tableview动画错误的视频 我有一个扩展/折叠其单元格的表格视图。 从iOS 11开始,tableView在插入和删除行时开始表现异常。contentSize在动画块发生之前已更改,因此,在视频中,您可以看到折叠的单元格上发生了错误的滚动回退。动画看起来不对。 这段代码在iOS 10上运行良好。有人知道苹果方面发生了什么变化吗?这是一个已知的问题? 问题答案: 我在iOS 11上

  • 我想为使用动画,但当为使用动画时,强制关闭我的应用程序并显示上下文错误即使我不能在适配器中使用toast如何在适配器中使用动画并解决上下文问题,我放了我的代码,如何能解决我的问题或适配器?请帮助我 我的错误

  • 我的RecyclView defaultItemAnimator有问题。当我使用elle fyItemRemve()删除我的一个项目时,我还会在另一个特定索引上调用elle fyItemChanged()来更改其中的文本。在删除动画期间,我在其上调用的项目通知fyItemChanged()会更改其文本,但会做一些看起来很傻的动画,像拇指疼痛一样突出。(它会立即移动到新位置,而其余的则会顺利移动到新

  • 据我所知,为RecolyerView实现一个在被刷项下方有背景的Swipe-to-Dississ的一种可能性(就像在许多google应用程序中一样)是为ItemTouchHelper实现一个简单的回调,并在onChildDraw方法中绘制背景。 这是我的实现: 现在,问题是如何在下面的背景中动画视图。这个动画的一个例子可以从google Calendar中获得:当事件或提醒被滑动时,左边的图标会相

  • 问题内容: 我正在尝试使用Matplotlib的圆和动画从选定的数据点模拟圆形冲击波的动画。但是我想不出一种方法来删除每个新框架中的旧圆圈。结果,随着半径的增加,我在画布上绘制了越来越多的圆圈- 像这样: 关于在matplotlib图上动画化圆形冲击波有什么建议吗? 到目前为止,我的代码是: 问题答案: 我认为您每次都可以用来更改圆圈大小: 因此,您不必每次都删除和重绘补丁,我认为这样做可能更有效