回收视图时,RecyclerView不尊重翻译

时间:2015-06-13 00:23:23

标签: android android-support-library android-recyclerview

我现在正在玩RecyclerView并偶然发现以下问题。当RecyclerView的LinearLayoutManager确定视图是否已关闭屏幕(因此它可以是回收者)时,它不会考虑视图的translationY

基本上,当我向上滚动并且我有正面translationY的视图时,LinearLayoutManager认为该视图不在屏幕上,但事实上,它仍然是可见的(因为它被翻译下来)。

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

是否有一种简单的方法可以告诉LinearLayoutManager查看translation属性,以便在无法从头开始重新实施LayoutManager的情况下做出有关回收视图的决定?

1 个答案:

答案 0 :(得分:0)

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

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