1. 关于RecyclerView的divider
ListView的divider设置起来很简单,只需要在xml中使用divider标签即可轻松实现。相比之下,RecyclerView就麻烦一点了,基本步骤如下:
- 继承RecyclerView.ItemDecoration,复写onDraw()/onDrawOver()、getItemOffsets方法;
- 通过mRecyclerView.addItemDecoration方法,给到RecyclerView来使用;
其中,自定义RecyclerView.ItemDecoration类,主要的套路就是在onDraw/onDrawOver方法中,通过Canvas去绘制divider,可以是Rect也可以是drawable,只要Canvas能draw出来都行。这一点相比ListView来讲,可定制性大大提高,可以满足绝大部分的需求了。
关于ItemDecoration中onDraw/onDrawOver方法,需要注意的是他们的执行顺序,这一点可以看下方法注释,介绍的很清楚了:ItemDecoration.onDraw -> itemView的onDraw -> ItemDecoration.onDrawOver
2.举个简单的栗子
|
|
可以看到在onDraw方法中,在横向排列RecyclerView的每个item后面,通过Canvas画出了一个drawable来作为divider(这个drawable是一个右向的箭头,类似右尖括号的效果)。这里需要注意的一点是,getItemOffsets方法中需要设置item之间的间隔,否则画出来的divider会覆盖在itemView之上。
完~