Theme.MaterialComponents colorPrimary не работает - PullRequest
1 голос
/ 25 февраля 2020

Я использую Theme.MaterialComponent, но это не влияет на мой actionBar, почему?

style. xml

 <!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.MaterialComponents">
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
        <item name="android:windowBackground">@color/windowBackground</item>
        <item name="android:textColor">@color/white</item>
    </style>

colors. xml

<resources>
    <color name="colorPrimary">#801336</color>
    <color name="colorPrimaryDark">#510a32</color>
    <color name="colorAccent">#ee4540</color>
    <color name="windowBackground">#2d142c</color>

    <color name="white">#FFF</color>
</resources>

enter image description here

1 Ответ

1 голос
/ 26 февраля 2020

Использование Theme.MaterialComponents в качестве родительского для темы вашего приложения не повлияет на ActionBar, как вы заметили. Вам нужно использовать одну из тем, которые наследуются от базовой темы.

  • Theme.MaterialComponents.NoActionBar, если вы хотите использовать свой собственный Toolbar как ActionBar и иметь темную тему (белый текст на темных цветах фона)
  • Theme.MaterialComponents.Light для Светлая тема (черный текст на светлом фоне) с ActionBar, сгенерированной средой выполнения
  • Theme.MaterialComponents.Light.NoActionBar для светлой темы с собственной Toolbar, без автоматически сгенерированной ActionBar
  • Theme.MaterialComponents.Light.DarkActionBar для общей светлой темы, за исключением темной ActionBar
  • Theme.MaterialComponents.DayNight для DayNight темы
  • Theme.MaterialComponents.DayNight.NoActionBar для темы DayNight без автоматически сгенерированного ActionBar
  • Theme.MaterialComponents.DayNight.DarkActionBar для темы DayNight с темной ActionBar

Примечание: вы можете использовать любой цвет, независимо от того, какую тему вы выберете. Но если вы выберете, например, Theme.MaterialComponents.Light.DarkActionBar и установите

 <item name="colorPrimary">@color/white</item>

, тогда ваш ActionBar будет белым и - поскольку вы сказали, что у вас темный ActionBar - текст также будет белым. Так что вы должны убедиться, что контраст достаточно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...