没错,就是多功能的RecyclerView分割线

这个分割线其实是两年前就已经写了,后来今年小伙伴跟我说要给LinearLayoutManager模式下的分割线加padingStart和paddingEnd,后面又遇到项目有需求需要控制显示前后风格先,顺便就把网格模式边框也加上了。又有同行给我留言要加horizontalspacing和verticalspacing,然后就改成现在这个样子了。

我感觉,今年的改动都差不多等于把这个view重新写了一遍,因为计算间距和画线的方式都是重新写的算法。具体重新总结一下,我的这个RecyclerViewDecoration有什么功能。


目前还是只支持LinearLayoutManager和GridLayoutManager两种布局方式,支持图片,包括.9图片,可以画纯色线和虚线。

paddingStart——分割线前边的内边距。

paddingEnd——分割线后边的内边距。

firstLineVisible ——控制是否显示头部分割线,也就是第一个item的上面是否还需要显示一个分割线。

lastLineVisible ——控制是否显示尾部分割线,也就是最后一个item的下面是否还需要显示一个分割线。


有些朋友给我留言说怎么这个分割线方向不起作用啊?哎呀,都是不认真的人。我这个定义的分割线的方向跟画线的方向是一致的,而不是layoutmanager的方向。所以说,基本跟设置的layoutmanager的方向是相反的。怕是有些人还是丢三落四的,我就加多了一个属性parent(RecyclerView recyclerview),这样你们就不用自己再设置分割线的方向了。

下面这个是纵向recyclerview的例子,横向的就类似了。

rvData.setLayoutManager(new LinearLayoutManager(context
  , LinearLayoutManager.VERTICAL,false));
rvData.addItemDecoration(new RecyclerViewItemDecoration.Builder(context)
        //default mode is RecyclerViewItemDecoration.HORIZONTAL
        .mode(RecyclerViewItemDecoration.HORIZONTAL) //or parent(rvData)
        .color(Color.RED)
        .color("#ff0000")
        .dashWidth(8)
        .dashGap(5)
        .thickness(6)
        .drawableID(R.drawable.diver)
        .drawableID(R.drawable.diver_color_no)
        .paddingStart(20)
        .paddingEnd(10)
        .firstLineVisible(true)
        .lastLineVisible(true)
        .create());

网格布局

gridBottomVisible(true) //显示底部边框
gridTopVisible(true) //显示头部边框
gridLeftVisible(true) //显示左边边框
gridRightVisible(true) //显示右边边、
gridHorizontalSpacing(20) //横向item之间的间距
gridVerticalSpacing(10)  //纵向item之间的间距
【注意】使用纵横向间距,目前只支持画线类型,不支持图片类型。

rvData.setLayoutManager(new GridLayoutManager(this, 6));
rvData.addItemDecoration(new RecyclerViewItemDecoration.Builder(this)
       .mode(RecyclerViewItemDecoration.MODE_GRID) //or parent(rvData)
       .color(Color.RED)
       .color("#ff0000")
       .dashWidth(8)
       .dashGap(5)
       .thickness(6)
       .drawableID(R.drawable.diver_color_no)
       .gridBottomVisible(true) //control bottom border
       .gridTopVisible(true) //control top border
       .gridLeftVisible(true) //control left border
       .gridRightVisible(true) //control right border
       .create());


源码地址:https://github.com/arjinmc/RecyclerViewDecoration

你可能感兴趣的:(Android)