安卓 StaggeredGridLayoutManager 将单元格放置在错误的位置

问题描述

我使用带有 StaggeredGridLayoutManager 的 recyclerView。我有两列,列中的单元格可以具有不同的高度。这些物品的位置很好,但是在某些设备上我注意到了以下问题。假设我有一个元素列表:A、B、C、D、E、F、G、H。从视觉上看,它看起来像这样:

My columns image

我预计 G 元素会在左列中,因为这些元素是从左到右定位的,请告诉我这种行为的原因可能是什么。我需要元素位于左列中。 G 元素应该适合左列的自由位置,但它位于右侧,这对我来说是不正确的 这只能在某些设备上播放。 我期望元素的这种顺序,在左列中:A、C、E、G,在右列中:B、D、F、H。 我尝试将 gapStrategy 设置为 GAP_HANDLING_NONE,但之后我的项目没有显示

sglm.gapStrategy = StaggeredGridLayoutManager.GAP_HANDLING_NONE

解决方法

如果你不希望你的 LayoutManager 填补空白,你可以像这样改变 gapStrategy

    val lm = StaggeredGridLayoutManager(...)

    lm.gapStrategy = StaggeredGridLayoutManager.GAP_HANDLING_NONE

默认处理是

lm.gapStrategy = StaggeredGridLayoutManager.GAP_HANDLING_MOVE_ITEMS_BETWEEN_SPANS