继承后更改 ActionBar 文本颜色 Theme.AppCompat.DayNight

Change ActionBar text color after inheriting Theme.AppCompat.DayNight

我正在实现对深色模式的支持。但是在我将 Theme parent 更改为 Theme.AppCompat.DayNight 后,Action Bar 中的文本为黑色(白天模式为黑色,深色模式为白色)。我希望文本始终为白色。我尝试更改 styles.xml 中的文本颜色(值和 values-night)

<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>

但它不起作用。 ActionBar 中的标题文本颜色仍然是黑色。

在您的主题中使用 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/...."
   ../>

而不是 Material 组件库和 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