Почему цвет, который я установил для cardBackgroundColor, не совсем тот, который отображается? - PullRequest
3 голосов
/ 22 марта 2020

Фон

Я пытаюсь подготовить темную тему для приложения, и одним из требований является наличие определенного c цвета для карточек и диалогов: # ff3c454 c

Проблема

Независимо от того, установил ли я это силой (app:cardBackgroundColor="#3c454c"), по ссылке (app:cardBackgroundColor="@color/...) или просто в теме - во всех случаях я не получаю установленный цвет. Вместо этого я получаю цвет # 525A61.

Я проверил только красный цвет (# f00), просто чтобы убедиться, что он влияет на карту, и это так, и для этого цвета это действительно будет хорошо , Но для цвета, который я установил, это не так.

То, что я пробовал

Когда я писал, я пробовал несколько способов установить цвет. Сначала я хотел использовать только саму тему, поэтому я установил ее следующим образом:

стилей. xml

    <style name="AppTheme" parent="Theme.MaterialComponents.DayNight.DarkActionBar">
        ...
        <item name="colorBackgroundFloating">@color/colorBackgroundFloating</item>
        <item name="colorSurface">@color/colorBackgroundFloating</item>
    </style>

res / values-night / colors. xml

    <color name="colorBackgroundFloating">#ff3c454c</color>

Позже я попытался использовать цвет напрямую и даже установить его как жестко закодированный. Все еще получил неправильный цвет при отображении.

Видя, что это может быть ошибкой в ​​самой библиотеке, я сообщил об этом здесь (включая образец проект, если вы хотите sh проверить его.)

Я заметил, что точно такая же проблема возникает для BottomNavigationView и, вероятно, других подобных случаев.

Вопрос

Почему это происходит? Есть ли обходной путь для этого? Что-то, что исправит это глобально для всех представлений, которые используют эти атрибуты?

1 Ответ

3 голосов
/ 22 марта 2020

То, что вы видите, это наложение высот, которое они ввели, чтобы сделать возвышение более заметным в темной теме, где тени не так заметны. Вы можете прочитать об этом здесь: https://material.io/develop/android/theming/dark/ в разделе «Наложения отметок»

Простое решение, если вы не хотите, чтобы это поведение состояло в том, чтобы добавить это в вашу тему.

<item name="elevationOverlayEnabled">false</item>

И вы также можете настроить его на другой цвет или даже более тонкую версию наложения, изменив альфа:

<item name="elevationOverlayColor">#80FFFFFF</item>
...