我已经实现了RecyclerView
,我可以在其中添加和删除项目。我想在最后一个位置添加添加的项目,每当我添加一个新项目时,动画运行良好。也就是说,最后一项向下移动,让新项目的空间淡入。
当我删除某个项目时,会出现一个我不知道如何修复的问题。我希望它的表现如下:
实际发生的是,首先,最后一项消失,然后动画的其余部分发生。当已删除元素下方的项目向上移动时,最后一项将重新显示为来自墙后面。
对我来说,似乎RecyclerView
缩小到“动画后”高度,然后执行动画。
我尚未定义ItemAnimator
,因此DefaultItemAnimator
必须是使用的supportsPredictiveItemAnimations
。我观看了this video,并在LinearLayoutManager
的自定义实现中覆盖了#navigation {
background-color: red;
width: 10%;
height: 3000px;
float: left;
position: absolute;
z-index: 99999;
left: 0;
top: 0;
}
方法,但它无法修复它。
答案 0 :(得分:2)
我已通过Google问题跟踪器here
报告了此问题我希望我们能尽快得到解决!正如您所说,当您的recyclerview正在包装它的内容以计算它的高度时,它似乎与recyclerview的度量更新和动画之间的可能竞争条件非常相关。
This article也以非常详细的方式解释了这个问题。
答案 1 :(得分:0)
也许有点晚了,但我能够通过将 RecyclerView 项目动画器设置为 null,然后在我的适配器的 setList(list)
函数中这样安排转换来解决这个问题:
Transition transition = new AutoTransition();
transition.setDuration(200); // Or any duration you want
TransitionManager.beginDelayedTransition(mRootViewGroup, transition);
其中 mRootViewGroup 是包含 RecyclerView 的视图组。
通过将 layout_height(或宽度,取决于滚动方向)设置为 wrap_content 以外的其他值也可以解决此问题,但是如果像我一样,您需要将 recyclerview 高度设置为 wrap_content,这可能是您的解决方案.
不确定它是否也能解决您的问题,但我想我不妨分享一下对我有用的方法。