package com.github.libretube.ui.views import android.graphics.Rect import android.view.View import androidx.recyclerview.widget.RecyclerView class GridSpacingItemDecoration( private val spanCount: Int, private val spacing: Int, private val includeEdge: Boolean ) : RecyclerView.ItemDecoration() { override fun getItemOffsets(outRect: Rect, view: View, parent: RecyclerView, state: RecyclerView.State) { val position = parent.getChildAdapterPosition(view) // item position if (position == RecyclerView.NO_POSITION) return val column = position % spanCount // item column if (includeEdge) { outRect.left = spacing - column * spacing / spanCount outRect.right = (column + 1) * spacing / spanCount if (position < spanCount) { // top edge outRect.top = spacing } outRect.bottom = spacing // item bottom } else { outRect.left = column * spacing / spanCount outRect.right = spacing - (column + 1) * spacing / spanCount if (position >= spanCount) { outRect.top = spacing } } } }