Измените цвет текста ActionBar после наследования Theme.AppCompat.DayNight

Реализую поддержку темного режима. Но после того, как я изменил родительскую тему Theme на Theme.AppCompat.DayNight, текст на панели действий стал черным (черный в дневном режиме и белый в темном режиме). Я хочу, чтобы текст всегда был белым. Я попытался изменить цвет текста в styles.xml (значения и значения-ночь)

<style name="AppTheme" parent="Theme.AppCompat.DayNight">
  <item name="android:actionBarStyle">@style/MyActionBarStyle</item>
</style>

<style name="MyActionBarStyle" parent="Theme.AppCompat.DayNight.DarkActionBar">
  <item name="android:titleTextStyle">@style/MyActionBarTitleTextStyle</item>
</style>

<style name="MyActionBarTitleTextStyle" parent="TextAppearance.AppCompat.Widget.ActionBar.Title">
  <item name="android:textColor">@color/white</item>
</style>

Но это не работает. Цвет текста заголовка в Action Bar по-прежнему черный.

3 ответа

Решение

Используя ActionBar в своей теме, вы должны использовать actionBarStyle атрибут:

<style name="AppTheme" parent="Theme.AppCompat.DayNight">
   <item name="actionBarStyle">@style/....</item>
</style>

<style name="MyActionBarStyle" parent="Theme.AppCompat.DayNight.DarkActionBar">
  <item name="titleTextStyle">@style/...</item>
</style>

Если вы используете Toolbar API, вы также можете использовать

 <Toolbar
   app:titleTextColor="@color/...."
   ../>

Вместо этого с библиотекой компонентов материала и Toolbar API вы можете использовать:

<style name="AppTheme" parent="Theme.MaterialComponents.DayNight">
   <item name="toolbarStyle">@style/my_Toolbar</item>
</style>

<style name=my_Toolbar" parent="@style/Widget.MaterialComponents.Toolbar">
    <item name="titleTextColor">@color/...</item>
</style>    

Лучшее и простое решение - ответ @MagogCZ =>

"работает на меня <style name="AppTheme" parent="Theme.AppCompat.DayNight.DarkActionBar">" - MagogCZ

нужно использовать actionBarTheme и нет actionBarStyle для текста Цвет

Другие вопросы по тегам