【发布时间】:2021-01-11 19:08:52
【问题描述】:
我试图理解为什么 ActionBar 在 Light vs Dark 主题中的样式不同。下面是一个简单的设置屏幕,可以在具有相同主题的浅色和深色主题之间切换。
值\themes.xml
<resources xmlns:tools="http://schemas.android.com/tools">
<!-- Dark application theme. -->
<style name="Theme.SettingsApplication" parent="Theme.MaterialComponents.DayNight.DarkActionBar">
<item name="colorPrimary">@color/blue_normal</item>
<item name="colorPrimaryVariant">@color/blue_dark</item>
<item name="colorOnPrimary">@color/white</item>
<item name="android:statusBarColor" tools:targetApi="l">?attr/colorPrimaryVariant</item>
<item name="colorSurface">@color/red</item>
<item name="colorOnSurface">@color/green</item>
</style>
</resources>
values-night\themes.xml
<resources xmlns:tools="http://schemas.android.com/tools">
<!-- Dark application theme. -->
<style name="Theme.SettingsApplication" parent="Theme.MaterialComponents.DayNight.DarkActionBar">
<item name="colorPrimary">@color/blue_normal</item>
<item name="colorPrimaryVariant">@color/blue_dark</item>
<item name="colorOnPrimary">@color/white</item>
<item name="android:statusBarColor" tools:targetApi="l">?attr/colorPrimaryVariant</item>
<item name="colorSurface">@color/red</item>
<item name="colorOnSurface">@color/green</item>
</style>
</resources>
值\colors.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="blue_normal">#FF3F7FBF</color>
<color name="blue_dark">#FF2F6090</color>
<color name="white">#FFFFFFFF</color>
<color name="red">#FF0000</color>
<color name="green">#00FF00</color>
</resources>
在 Light 它们中,ActionBar 显示为蓝色和白色,表明它正在使用 colorPrimary 和 colorOnPrimary。在 Dark 主题中,它显示为红色和绿色,表明它正在使用 colorSurface 和 colorOnSurface。为什么这些应用不同,我如何才能在ActionBar 上获得一致的颜色应用?
【问题讨论】:
标签: android android-actionbar android-toolbar android-dark-theme android-darkmode