在提供给RecyclerView的画布上绘制任何适当的装饰。通过此方法绘制的任何内容都将在绘制项目视图之后绘制,因此将出现在 item 视图上面。
RecyclerViewDivider,已支持以下功能
-
自定义分割线,设置 drawable
-
设置分割线高度,颜色
-
设置分割线距离屏幕左边,右边的距离
-
设置是否显示最后一条分割线
详情代码见 RecyclerViewSample
实现思路
我们知道 RecyclerView 没有像之前 ListView 提供 divider 属性,设置分割线的话有挺多人在 itemView 的布局里面加个 1dp 左右的 view,根据业务场景设置是否可见。这是其中的一种方法。
但其实,我们也可以使用 recyclerView.addItemDecoration() 来实现,主要需要重写 getItemOffsets 和 onDraw 方法
思路很简单
-
重写 getItemOffsets 方法,加上 divider 的高度,影响 itemView 的最终 size
-
在 onDraw 方法,根据 LinearLayoutManager 的方向分别绘制分割线
@Override
public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) {
super.getItemOffsets(outRect, view, parent, state);
outRect.set(0, 0, 0, mDividerHeight);
}
@Override
public void onDraw(Canvas c, RecyclerView parent, RecyclerView.State state) {
super.onDraw(c, parent, state);
if (mOrientation == LinearLayoutManager.VERTICAL) {
drawVerticalDivider(c, parent);
} else {
drawHorizontalDivider(c, parent);
}<