Just add your resource to this decorator.
DividerItemDecoration decorator = new DividerItemDecoration(ContextCompat.getDrawable(getContext(), R.drawable.line_dashed)); recyclerView.addItemDecoration(decorator);
and class DividerItemDecorator:
public class DividerItemDecoration extends RecyclerView.ItemDecoration { private Drawable mDivider; private int mPaddingLeft; public DividerItemDecoration(Drawable divider) { mDivider = divider; mPaddingLeft = 0; } public DividerItemDecoration(Drawable divider, int paddingLeft) { mDivider = divider; mPaddingLeft = paddingLeft; } @Override public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) { super.getItemOffsets(outRect, view, parent, state); if (mDivider == null) return; if (parent.getChildAdapterPosition(view) < 1) return; if (getOrientation(parent) == LinearLayoutManager.VERTICAL) { outRect.top = mDivider.getIntrinsicHeight(); } else { outRect.left = mDivider.getIntrinsicWidth(); } } @Override public void onDrawOver(Canvas c, RecyclerView parent, RecyclerView.State state) { if (mDivider == null) { super.onDrawOver(c, parent, state); return; } if (getOrientation(parent) == LinearLayoutManager.VERTICAL) { final int left = parent.getPaddingLeft() + mPaddingLeft; final int right = parent.getWidth() - parent.getPaddingRight(); final int childCount = parent.getChildCount(); for (int i = 1; i < childCount; i++) { final View child = parent.getChildAt(i); final RecyclerView.LayoutParams params = (RecyclerView.LayoutParams) child.getLayoutParams(); final int size = mDivider.getIntrinsicHeight(); final int top = child.getTop() - params.topMargin; final int bottom = top + size; mDivider.setBounds(left, top, right, bottom); mDivider.draw(c); } } else {
Should work, I tested it.
UPDATE:
android:layerType="software"
add this parameter to xml for recyclerView Also add size to your form:
<size android:height="1dp"/>
source share