问题记录
- StaggeredGridLayoutManager 实现瀑布流。
- 瀑布流里面每个元素的高是不一致的,会出现左右右这种排列情况。
- 这个时候通过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)
}
}
}