DividerItemDecoration
предполагает, что предоставленный вами объект рисования представляет собой сплошной прямоугольник и досадно игнорирует ваше определение XML строки. Обходной путь, который я нашел, состоит в том, чтобы создать мозаичный BitmapDrawable
вручную, например ::1003*
// get pixel count for 1 dip
float dip1 = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 1f, getContext().getResources().getDisplayMetrics());
// create a bitmap to draw our dash
Bitmap bitmap = Bitmap.createBitmap((int)(15f * dip1) , (int)dip1, Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(bitmap);
Paint paint = new Paint();
// fill the bitmap with the background colour of the list items
canvas.drawColor(listItemBackgroundColour);
// create a dash effect dash with = 10 dip, dash gap = 5 dip
paint.setPathEffect(new DashPathEffect(new float [] { 10f * dip1, 5f * dip1 }, 0));
// draw a single pixel wide line across the bitmap
paint.setStrokeWidth(dip1);
paint.setColor(lineColour);
paint.setStyle(Paint.Style.STROKE);
canvas.drawLine(0f, dip1 / 2f, 15f * dip1, dip1 / 2f, paint);
// now create a tiled drawable using the bitmap
BitmapDrawable drawable = new BitmapDrawable(context.getResources(), bitmap);
drawable.setTileModeX(Shader.TileMode.REPEAT);
// pass the drawable to the item decorator
DividerItemDecoration itemDecorator = new DividerItemDecoration(getContext(), layoutManager.getOrientation());
itemDecorator.setDrawable(drawable);
addItemDecoration(itemDecorator);
Не такой аккуратный, как определение ресурса формы XML, но он делает свое дело.
Обратите внимание, что вам нужно знать цвет фона элементов рециркуляции, чтобы смешаться в пунктирной линии, в противном случае вы получите цвет фона темы, отображаемый через пробелы в черточках.
Надеюсь, это поможет.