Recyclerview间距左右靠边中间均分

434 阅读1分钟
GridLayoutManager是把item均分成列数,outRect的参数是指item在均分的空间内的上下左右边距


class SpaceItemDecoration(var mSpace: Int = 0) : RecyclerView.ItemDecoration() {
        override fun getItemOffsets(
            outRect: Rect, view: View, parent: RecyclerView, state: RecyclerView.State
        ) {
            val position = parent.getChildAdapterPosition(view)

       
            val space =
                mRecyclerView.width - DEFAULT_COLUMN_SIZE * resources.getDimensionPixelSize(R.dimen.mainframe_bottom_tab_bar_height)
            val eachSpace = space / (DEFAULT_COLUMN_SIZE - 1)
            val column = position % DEFAULT_COLUMN_SIZE

            outRect.left = column * eachSpace / DEFAULT_COLUMN_SIZE
            outRect.right =
                eachSpace - (column + 1) * eachSpace / DEFAULT_COLUMN_SIZE
        }
    }