RecycleView分割线

class CustomItemDecoration(private vararg val itemDivider: Drawable) :
    RecyclerView.ItemDecoration() {


    companion object {
        const val TAG = "CustomItemDecoration"
    }

    /**
     *  每次测量Item尺寸的时候调用
     */
    override fun getItemOffsets(
        outRect: Rect,
        view: View,
        parent: RecyclerView,
        state: RecyclerView.State
    ) {
        super.getItemOffsets(outRect, view, parent, state)

        outRect.bottom += itemDivider[0].intrinsicHeight
    }

    /**
     *  绘制Item之前调用
     */
    override fun onDraw(c: Canvas, parent: RecyclerView, state: RecyclerView.State) {
        super.onDraw(c, parent, state)

        val childCount = parent.childCount

        val rect = Rect()
        rect.left = parent.paddingLeft
        rect.right = parent.width - parent.paddingRight

        Log.d(TAG, "childCount = $childCount")

        for (i in 0 until childCount) {
            val child = parent.getChildAt(i)
            rect.top = child.bottom
            rect.bottom = rect.top + itemDivider[0].intrinsicHeight
            if (i and 1 == 0) {
                Log.d(TAG, "i = $i")
                itemDivider[0].bounds = rect
                itemDivider[0].draw(c)
            } else {
                itemDivider[1].bounds = rect
                itemDivider[1].draw(c)
            }
        }

    }

    /**
     *  绘制Item之后调用
     */
    override fun onDrawOver(c: Canvas, parent: RecyclerView, state: RecyclerView.State) {
        super.onDrawOver(c, parent, state)
    }
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。