这个分割线其实是两年前就已经写了,后来今年小伙伴跟我说要给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());