在提供给RecyclerView的画布上绘制任何适当的装饰。通过此方法绘制的任何内容都将在绘制项目视图之前绘制,因此将显示在 item 视图下面
void onDrawOver (Canvas c, RecyclerView parent, RecyclerView.State state)
Draw any appropriate decorations into the Canvas supplied to the RecyclerView. Any content drawn by this method will be drawn after the item views are drawn and will thus appear over the views.
在提供给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(Canva