如果还不会使用RecyclerView,请看我的另一篇博客
RecyclerView不像ListView那样自带分割线,需要自定义分割线
先在drawable中创建一个line_divider.xml文件用户设置分割线的颜色
自定义RecyclerView.ItemDecoration类的子类SimpleDividerItemDecoration类,代码如下:
public class SimpleDividerItemDecoration extends RecyclerView.ItemDecoration { private Drawable mDivider; //分割线Drawable private int mDividerHeight; //分割线高度 private int inset; //分割线缩进值 /** * 使用line_divider中定义好的颜色 * * @param context * @param dividerHeight 分割线高度 */ public SimpleDividerItemDecoration(Context context, int dividerHeight) { mDivider = ContextCompat.getDrawable(context, R.drawable.line_divider); mDividerHeight = dividerHeight; } public SimpleDividerItemDecoration(Context context, int inset, int dividerHeight) { this.inset = inset; mDivider = ContextCompat.getDrawable(context, R.drawable.line_divider); mDividerHeight = dividerHeight; } /** * @param context * @param divider 分割线Drawable * @param dividerHeight 分割线高度 */ public SimpleDividerItemDecoration(Context context, Drawable divider, int dividerHeight) { if (divider == null) { mDivider = ContextCompat.getDrawable(context, R.drawable.line_divider); } else { mDivider = divider; } mDividerHeight = dividerHeight; } //获取分割线尺寸 @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 onDrawOver(Canvas c, RecyclerView parent, RecyclerView.State state) { int left = parent.getPaddingLeft(); int right = parent.getWidth() - parent.getPaddingRight(); int childCount = parent.getChildCount(); //最后一个item不画分割线 for (int i = 0; i < childCount - 1; i++) { View child = parent.getChildAt(i); RecyclerView.LayoutParams params = (RecyclerView.LayoutParams) child.getLayoutParams(); int top = child.getBottom() + params.bottomMargin;// int bottom = top + mDividerHeight; int bottom = top + mDivider.getIntrinsicHeight(); if (inset > 0) { mDivider.setBounds(left + inset, top, right - inset, bottom); } else { mDivider.setBounds(left, top, right, bottom); } mDivider.draw(c); } }}
使用:
recyclerView.addItemDecoration(new SimpleDividerItemDecoration(this,20, 5));