DividerItemDecoration рисует полностью непрозрачным

Независимо от того, каким образом я создаю, устанавливаю его альфу или назначаю рисуемый объект DividerItemDecoration в моем RecyclerView, рисуемый объект всегда отображается полностью непрозрачным в моем представлении. Почему это так и как я могу сделать мой разделитель прозрачным?

Я просмотрел источник для DividerItemDecoration и нигде не нашел, что частное поле mDivider имеет альфа-модификацию. Он вызывает mDivider.draw(canvas), чей комментарий к методу гласит: «Рисовать в его границах (устанавливается с помощью setBounds) учитывая дополнительные эффекты, такие как альфа-канал (устанавливается с помощью setAlpha) и цветовой фильтр (устанавливается с помощью setColorFilter )".

Я попытался создать Drawable в виде формы XML с прозрачным цветом. Я попытался создать Drawable как однопиксельный PNG. Я попытался программно установить альфу на Drawable с помощью setAlpha(). Я попытался программно присвоить Drawable DividerItemDecoration с помощью setDrawable(). Я пытался назначить Drawable в теме с @android:attr/listDivider. Все эти методы дают один и тот же результат. Drawable становится полностью непрозрачным.


person Jeff Lockhart    schedule 31.08.2018    source источник
comment
setAlpha отлично работает: DividerItemDecoration decor = new DividerItemDecoration(this, DividerItemDecoration.VERTICAL); Drawable dr = getResources().getDrawable(R.drawable.chrome); dr.setAlpha(32); decor.setDrawable(dr); rv.addItemDecoration(decor);   -  person pskink    schedule 31.08.2018
comment
Это имело тот же эффект, что и настройка альфы всеми другими способами, которые я пробовал. Я только что понял это, хотя. Я отвечу через минуту.   -  person Jeff Lockhart    schedule 31.08.2018


Ответы (1)


Хорошо, разобрался с этим. Проблема заключалась в том, что цвет фона RecyclerView не был установлен. Я искал разделитель для рисования поверх представлений элементов, внизу их. Но на самом деле он рисует вид-разделитель между представлениями элементов с цветом RecyclerView за ним (если он установлен) или цветом представления, содержащего RecyclerView. Я искал прозрачный цвет, чтобы показать через светлый цвет представления элемента, вместо этого он отображался через темный цвет экрана по умолчанию за RecyclerView. Задача решена!

person Jeff Lockhart    schedule 31.08.2018