Android 排坑日记-RecycleView 瀑布流等间距实现

240 阅读1分钟

问题记录

  1. StaggeredGridLayoutManager 实现瀑布流。
  2. 瀑布流里面每个元素的高是不一致的,会出现左右右这种排列情况。
  3. 这个时候通过position来判断左右肯定是不对的。

解决办法

判断 spanindex

class FindLineDecoration: RecyclerView.ItemDecoration() {

    override fun getItemOffsets(
        outRect: Rect,
        view: View,
        parent: RecyclerView,
        state: RecyclerView.State
    ) {
        val params: StaggeredGridLayoutManager.LayoutParams =
            view.layoutParams as StaggeredGridLayoutManager.LayoutParams

        if (params.spanIndex % 2 == 1) {
            outRect.left = SizeUtils.dp2px(4f)
            outRect.right = SizeUtils.dp2px(8f)
        } else {
            outRect.left = SizeUtils.dp2px(8f)
            outRect.right = SizeUtils.dp2px(4f)
        }
    }
}