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. Кроме того, вы можете сделать это более настраиваемым.

Надежда может помочь кому-то.