栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

RecyclerView线性布局&网格布局的上下左右间距封装kotlin版

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

RecyclerView线性布局&网格布局的上下左右间距封装kotlin版

先上用法: 线性布局代码设置:
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: HashMap) : 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"
    }

}
RecyclerViewGridDecoration(网格布局间隔设置)
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
            }
        }
    }

}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/995770.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号