使用过ListView滴小伙伴都知道,ListView有这样一个属性android:divider,用来设置每个item之间分割线滴属性。问题来了,那么RecyclerView这个控件有没有这个属性呢,尝试了一下,没有这个属性,但是RecyclerView有这个方法mLinearRecycler.addItemDecoration(),用来添加分割线滴。下面是这部分源码:
public static abstract class ItemDecoration {
public void onDraw(Canvas c, RecyclerView parent, State state)
{
onDraw(c, parent);
}
public void onDrawOver(Canvas c, RecyclerView parent, State state)
{
onDrawOver(c, parent);
}
@Deprecated
public void getItemOffsets(Rect outRect, int itemPosition,RecyclerView parent)
{
outRect.set(0, 0, 0, 0);
}
public void getItemOffsets(Rect outRect, View view,RecyclerView parent, State state)
{
getItemOffsets(outRect, ((LayoutParams)view.getLayoutParams()).getViewLayoutPosition(), parent);
}
}
RecyclerView在调用addItemDecoration()滴时候就会去绘制decoration,通过源码我们会发现,会调用里面的onDraw()和onDrawOver()方法;而getItemOffsets(),是为每个Item设置一定的偏移量,主要用于绘制decorator。下面我们来看一下该类的实现,代码如下: