使用带有StaggeredLayoutManager的RecyclerView的问题

时间:2016-02-22 23:08:58

标签: android android-recyclerview layout-manager

我使用带有2个col / spans的StaggeredLayoutManager成功实现了RecyclerView。我在每个col中都有可变的高度项,高度不固定。

问题是,当我在RecyclerView中向下和向上滚动时,有时会在其中一行的顶部项目中出现间隙。我添加了一个描述我问题的视频。

我只是添加了一个跨度值为2的StaggeredLayout,并使用适配器调整了我的项目。

+ - + - + - + - + - + - + - + - + - + - + - + - +< ------ RecyclerView顶部

--------------< - 左栏中的顶级项目

-------------< - 右栏中的顶级项目,顶部有意外的差距/偏移/边距。 有时会出现差距。有时,一切都很好,没有任何问题。

以下是我从应用程序中获取的视频。 https://youtu.be/gmB7h73YR3M

查看列表,杯子和显示器中最顶部的2张图片(LinearLayouts)。每次向下滚动然后向上事件时,它们的顶部位置会有所不同,并且会出现一个不需要的灰色区域(RecyclerView的Backgroundcolor)。

在0-3秒之间,杯子顶部有一个间隙,左列。

在7-8之间,存在间隙但小于0-3

在10-12之间,一切都很好,他们的上衣处于同一水平。

在19-21之间,这一次右栏有一个差距。

我有这个问题的原因,任何解决方案?

编辑: 因为我不想要那么多移动项目,所以我将间隙策略设置为GAP_HANDLING_NONE。但是,当我将策略设置为GAP_HANDLING_MOVE_ITEMS_BETWEEN_SPANS时,当Scrolling Up结束于顶部时,两个项目的最高行会对齐。我的观察是,当滚动到顶部的元素时,如果策略是GAP_HANDLING_MOVE_ITEMS_BETWEEN_SPANS,则进行最后一次计算以对齐2个项目的顶行,但不是在GAP_HANDLING_NONE中。我可以看到它与我的眼睛一致,但是当策略是GAP_HANDLING_NONE时似乎没有发生。

0 个答案:

没有答案