package com.llf.basemodel.recycleview; import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.graphics.Rect; import android.support.v7.widget.RecyclerView; import android.view.View; import com.llf.basemodel.utils.SettingUtil; /** * Created by llf on 2017/3/2. * 自定义分割线 * http://www.jianshu.com/p/b46a4ff7c10a */ public class DefaultItemDecoration extends RecyclerView.ItemDecoration { private Paint mPaint; private int dividerHeight; public DefaultItemDecoration(Context context) { dividerHeight = SettingUtil.dip2px(context, 4); mPaint = new Paint(Paint.ANTI_ALIAS_FLAG); mPaint.setColor(Color.parseColor("#F2F2F2")); } /** * 可以实现类似绘制背景的效果,内容在上面 */ @Override public void onDraw(Canvas c, RecyclerView parent, RecyclerView.State state) { super.onDraw(c, parent, state); int childCount = parent.getChildCount(); int left = parent.getPaddingLeft(); int right = parent.getWidth() - parent.getPaddingRight(); for (int i = 0; i < childCount - 1; i++) { View view = parent.getChildAt(i); float top = view.getBottom(); float bottom = view.getBottom() + dividerHeight; c.drawRect(left, top, right, bottom, mPaint); } } /** * 以绘制在内容的上面,覆盖内容 */ @Override public void onDrawOver(Canvas c, RecyclerView parent, RecyclerView.State state) { super.onDrawOver(c, parent, state); } /** * 可以实现类似padding的效果 */ @Override public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) { super.getItemOffsets(outRect, view, parent, state); outRect.bottom = dividerHeight;//留出画线的距离 } }