### 結論
まずはItemDecoration
のサブクラスを作成。getItemOffsets
メソッドで、それぞれのItem
のオフセットをポジションなどによって調整します。
class GridSpacingItemDecoration( private val spanCount: Int, private val spacing: Int, private val includeEdge: Boolean ) : ItemDecoration() { override fun getItemOffsets( outRect: Rect, view: View, parent: RecyclerView, state: RecyclerView.State ) { val position = parent.getChildAdapterPosition(view) val column = position % spanCount if (includeEdge) { outRect.left = spacing - column * spacing / spanCount outRect.right = (column + 1) * spacing / spanCount if (position < spanCount) { outRect.top = spacing } outRect.bottom = spacing } else { outRect.left = column * spacing / spanCount outRect.right = spacing - (column + 1) * spacing / spanCount if (position >= spanCount) { outRect.top = spacing } } } }
あとは、RecyclerView
のItemDecoration
に、先ほど作成したサブクラスをセットすれば完了です。
fieldList.addItemDecoration(GridSpacingItemDecoration(3, 20, true))
てな感じで本日も以上となります🍺