Android CardView с пользовательским цветом тени
Можно ли изменить цвет тени вокруг CardView? В основном используется для отметки выбранной карты , как она была освещена на?
Должно быть допустимым для устройств L и pre-L.
Ответы
Ответ 1
CardView
Теневые цвета определяются в ресурсах библиотеки CardView. Вы можете переопределить их, переопределив значение ресурса в своем собственном проекте, но вы не можете динамически их изменять с помощью кода.
Изменить: переопределение значения ресурса влияет только на устройства до Lollipop. В Lollipop и выше CardView
всегда использует встроенную теневую реализацию, цвет которой не может быть изменен.
Ответ 2
Обновить. Проверьте мои модификации.
Здесь обходной путь:
Скопируйте исходный код CardView
. Затем создайте свой собственный модуль библиотеки Android и используйте этот модуль вместо библиотеки поддержки. После этого комментарий или удалить код в CardView, как показано ниже:
static {
// if (Build.VERSION.SDK_INT >= 21) {
// IMPL = new CardViewApi21Impl();
// } else
if (Build.VERSION.SDK_INT >= 17) {
IMPL = new CardViewApi17Impl();
} else {
IMPL = new CardViewBaseImpl();
}
IMPL.initStatic();
}
То есть вы будете использовать compat-версию CardViewApi17Impl
, даже если api равно 21 или выше. Затем вы можете определить свои собственные cardview_shadow_start_color
и cardview_shadow_end_color
, чтобы переопределить их в классе RoundRectDrawableWithShadow
. Кроме того, вы можете сделать это более настраиваемым.
Надежда может помочь кому-то.