没错,就是多功能的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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值