我试图理解为什么ActionBar
浅色主题与深色主题的风格不同。下面是一个简单的设置屏幕,可以在具有相同主题的浅色和深色主题之间切换。
值\主题.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>
值夜\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>
值\颜色.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>
在他们的光中,ActionBar
呈现为蓝色和白色,表明它正在使用colorPrimary
and colorOnPrimary
。在黑暗主题中,它呈现为红色和绿色,表明它正在使用colorSurface
and colorOnSurface
。为什么这些应用方式不同以及如何在图像上获得一致的颜色应用ActionBar
?
为什么这些应用不同
引用自文档:
大表面不应使用明亮的背景颜色,因为它们会发出过多的亮度。如果适用,Material 主题将开箱即用地提供此行为,例如,通过将 Light 主题默认为Widget.MaterialComponents.AppBarLayout.Primary
深色主题默认为Widget.MaterialComponents.AppBarLayout.Surface
.
因此,尽管浅色和深色主题的颜色相同,但是Primary
颜色是灯光模式下优选的颜色,并且surface
颜色适用于深色模式。
如何在 ActionBar 上获得一致的颜色应用?
这可以从之前的文档中得出结论..
所以,你只需要,有values\themes.xml
包含装有:
-
colorPrimary
& colorSurface
具有相同的值
-
colorOnPrimary
& colorOnSurface
具有相同的值
将此应用到您的示例中
值\主题.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="colorOnPrimary">@color/white</item>
<item name="colorSurface">@color/blue_normal</item>
<item name="colorOnSurface">@color/white</item>
</style>
</resources>
欲了解更多信息,请检查文档.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)