我们知道想要给RecycleView添加一条分割线需要使用 mRecycleView.addItemDecoration()添加,Android为我们提供了类似于ListView默认分割线的DividerItemDecoration,我们将其添加到RecycleView即可得到分割线,下面就参考DividerItemDecoration来介绍下ItemDecoration。

我们只需要继承ItemDecoration即可实现自己的分割线。

getItemOffsets用与设置每一个item的偏移。如下所示

outRect的上下左右会被当做item四周的间距。

onDraw方法用于绘制RecycleView的背景,我们需要在这个方法里面绘制我们需要绘制的东西。要想绘制分隔线,那么我们需要定位到分隔线所在的位置,错误示范。

要想准确的绘制,我们需要找到item的边界以及其他一些信息

获取Item的position

获取Item中设置的布局占用的区域

 

通过上图可以看到我们在getItemOffsets中设置的边距生效了,并且每一个item的区域以及我们自己的布局所占用的空间也标示出来了。我们想绘制分隔线或者其他的一些什么就可以了自由发挥了,可以参考DividerItemDecoration的源码。不过要注意的是我们在onDraw中可以绘制整个RecycleView的背景,这点我们可以用来做时光轴

onDrawOver是用来绘制RecycleView的前景的,就是说会绘制在Item的上面,我们可以用来绘制徽章等。

时光轴效果

给RecycleView加上间距

垂直方向加上边距

Grid布局

最后修改日期: 2019年6月4日

作者

留言

撰写回覆或留言

发布留言必须填写的电子邮件地址不会公开。