经常碰到一些场景,每个列表的第一个和最后一个可能间距不一样(意思就是说每个item统一设置一样的间距的话,会不符合自己的预期),此时我们有一个很好的做法就是自定义 ItemDecoration
上代码:
- class ItemDecoration(val context: Context) : RecyclerView.ItemDecoration() {
-
- override fun getItemOffsets(
- outRect: Rect,
- view: View,
- parent: RecyclerView,
- state: RecyclerView.State
- ) {
- super.getItemOffsets(outRect, view, parent, state)
- // 设置间距,比如除了第一个item,别的item的left都是6dp
- if (parent.getChildAdapterPosition(view) != 0) {
- outRect.left = 6f.dp2px.toInt()
- }
- }
- }