我正在玩RecyclerView
,偶然发现了以下问题。当RecyclerView的LinearLayoutManager
决定是否 View 离开屏幕(以便可以成为回收站)时,它不会考虑 View 的translationY
。
因此,从本质上讲,当我向上滚动并看到带有正translationY
的 View 时,LinearLayoutManager
认为该 View 不在屏幕上,但实际上,它仍然可见(因为它已向下翻译)。
我注意到LinearLayoutManager
做出此决定的方式-是通过查看getDecoratedBottom(View)
,因此我尝试覆盖getDecoratedBottom(View)
以也包括翻译。不幸的是,它完全弄乱了布局-当我们对新项目进行布局时,也会使用此方法,因此新项目会得到额外的翻译(在现有项目的基础上)。
当它决定回收 View 而无需从头开始重新实现LinearLayoutManager
时,是否有一种简单的方法告诉translation
查看LayoutManager
属性?
最佳答案
我找到了解决方法,可能对某些人有帮助。
首先,我尝试使用翻译动画没有运气。
但是然后,我刚刚创建了一个扩展ItemDecoration
的新类。然后覆盖getItemOffsets()
并在Rect上设置适当的偏移量。 LayoutManager成功计算此偏移量。取得的结果在附带的图像上。