RecyclerView remove divider / decorator after the last item

前端 未结 9 2077
礼貌的吻别
礼貌的吻别 2020-12-07 17:46

I have a quite simple RecyclerView.
This is how I set the divider:

DividerItemDecoration itemDecorator = new DividerItemDecoration(getContext(), DividerI         


        
9条回答
  •  挽巷
    挽巷 (楼主)
    2020-12-07 18:07

    Here is Kotlin version of accepted answer :

    class DividerItemDecorator(private val divider: Drawable?) : RecyclerView.ItemDecoration() {
    
        override fun onDrawOver(canvas: Canvas, parent: RecyclerView, state: RecyclerView.State) {
            val dividerLeft = parent.paddingLeft
            val dividerRight = parent.width - parent.paddingRight
            val childCount = parent.childCount
            for (i in 0..childCount - 2) {
                val child: View = parent.getChildAt(i)
                val params =
                    child.layoutParams as RecyclerView.LayoutParams
                val dividerTop: Int = child.bottom + params.bottomMargin
                val dividerBottom = dividerTop + (divider?.intrinsicHeight?:0)
                divider?.setBounds(dividerLeft, dividerTop, dividerRight, dividerBottom)
                divider?.draw(canvas)
            }
        }
    }
    

提交回复
热议问题