我正在玩RecyclerView,偶然发现了以下问题。当RecyclerView的LinearLayoutManager决定是否 View 离开屏幕(以便可以成为回收站)时,它不会考虑 View 的translationY

因此,从本质上讲,当我向上滚动并看到带有正translationY的 View 时,LinearLayoutManager认为该 View 不在屏幕上,但实际上,它仍然可见(因为它已向下翻译)。

我注意到LinearLayoutManager做出此决定的方式-是通过查看getDecoratedBottom(View),因此我尝试覆盖getDecoratedBottom(View)以也包括翻译。不幸的是,它完全弄乱了布局-当我们对新项目进行布局时,也会使用此方法,因此新项目会得到额外的翻译(在现有项目的基础上)。

当它决定回收 View 而无需从头开始重新实现LinearLayoutManager时,是否有一种简单的方法告诉translation查看LayoutManager属性?

最佳答案

我找到了解决方法,可能对某些人有帮助。

首先,我尝试使用翻译动画没有运气。
但是然后,我刚刚创建了一个扩展ItemDecoration的新类。然后覆盖getItemOffsets()并在Rect上设置适当的偏移量。 LayoutManager成功计算此偏移量。取得的结果在附带的图像上。

android - 回收 View 时,RecyclerView不尊重翻译-LMLPHP

09-11 03:55
查看更多