我使用带有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时似乎没有发生。