recyclerView.addItemDecoration(Decoration.decoration(5, 5, 5,5))
网格布局代码设置:
recyclerView.addItemDecoration(Decoration.GridDecoration(3, 10, true)) Decoration(可直接用 也可根据自己需求自行修改~~~~)import java.util.*
object Decoration {
fun LinearDecoration(top: Int, bottom: Int, left: Int, right: Int): RecyclerViewSpacesItemDecoration {
val stringIntegerHashMap = HashMap()
//top间距
stringIntegerHashMap[RecyclerViewSpacesItemDecoration.TOP_DECORATION] = top
//底部间距
stringIntegerHashMap[RecyclerViewSpacesItemDecoration.BOTTOM_DECORATION] = bottom
//左间距
stringIntegerHashMap[RecyclerViewSpacesItemDecoration.LEFT_DECORATION] = left
//右间距
stringIntegerHashMap[RecyclerViewSpacesItemDecoration.RIGHT_DECORATION] = right
return RecyclerViewSpacesItemDecoration(stringIntegerHashMap)
}
fun GridDecoration(spanCount: Int, spacing: Int, includeEdge: Boolean): RecyclerViewGridDecoration {
return RecyclerViewGridDecoration(spanCount, spacing, includeEdge)
}
}
RecyclerViewSpacesItemDecoration(线性布局间隔设置)
import android.graphics.Rect import android.view.View import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.RecyclerView.ItemDecoration import java.util.* class RecyclerViewSpacesItemDecoration internal constructor(private val mSpaceValueMap: HashMapRecyclerViewGridDecoration(网格布局间隔设置)) : ItemDecoration() { override fun getItemOffsets(outRect: Rect, view: View, parent: RecyclerView, state: RecyclerView.State) { if (mSpaceValueMap[TOP_DECORATION] != null) outRect.top = mSpaceValueMap[TOP_DECORATION]!! if (mSpaceValueMap[LEFT_DECORATION] != null) outRect.left = mSpaceValueMap[LEFT_DECORATION]!! if (mSpaceValueMap[RIGHT_DECORATION] != null) outRect.right = mSpaceValueMap[RIGHT_DECORATION]!! if (mSpaceValueMap[BOTTOM_DECORATION] != null) outRect.bottom = mSpaceValueMap[BOTTOM_DECORATION]!! } companion object { const val TOP_DECORATION = "top_decoration" const val BOTTOM_DECORATION = "bottom_decoration" const val LEFT_DECORATION = "left_decoration" const val RIGHT_DECORATION = "right_decoration" } }
import android.graphics.Rect
import android.view.View
import androidx.recyclerview.widget.RecyclerView
import androidx.recyclerview.widget.RecyclerView.ItemDecoration
class RecyclerViewGridDecoration internal constructor(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) {
// item position
val position = parent.getChildAdapterPosition(view)
// item column
val column = position % spanCount
if (includeEdge) {
// spacing - column * ((1f / spanCount) * spacing)
outRect.left = spacing - column * spacing / spanCount
// (column + 1) * ((1f / spanCount) * spacing)
outRect.right = (column + 1) * spacing / spanCount
// top edge
if (position < spanCount) {
outRect.top = spacing
}
// item bottom
outRect.bottom = spacing
} else {
// column * ((1f / spanCount) * spacing)
outRect.left = column * spacing / spanCount
// spacing - (column + 1) * ((1f / spanCount) * spacing)
outRect.right = spacing - (column + 1) * spacing / spanCount
if (position >= spanCount) {
// item top
outRect.top = spacing
}
}
}
}



