Android statusBarColor 与 colorPrimaryDark

4 android themes android-appcompat

这两个字段具有相同的影响,但statusBarColor在主题中具有更高的优先级

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="android:windowActionBar">false</item>
    <item name="android:windowNoTitle">true</item>
    <item name="android:colorPrimary">@color/colorPrimary</item>
    <item name="android:colorPrimaryDark">@android:color/black</item>
    <item name="android:colorAccent">@color/colorAccent</item>
</style>
Run Code Online (Sandbox Code Playgroud)

在上面的代码的状态栏具有黑色的颜色,但在下面的代码的状态栏具有白色

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="android:windowActionBar">false</item>
    <item name="android:windowNoTitle">true</item>
    <item name="android:colorPrimary">@color/colorPrimary</item>
    <item name="android:colorPrimaryDark">@android:color/black</item>
    <item name="android:statusBarColor">@android:color/white</item>
    <item name="android:colorAccent">@color/colorAccent</item>
</style>
Run Code Online (Sandbox Code Playgroud)

AppCompat 主题的主要区别是什么?

Viv*_*hra 5

来自developer.android.com

要为状态栏设置自定义颜色,请在扩展材质主题时使用 android:statusBarColor 属性。默认情况下,android:statusBarColor 继承 android:colorPrimaryDark 的值。


小智 5

statusBarColor 和 colorPrimaryDark 之间的主要区别是:

  • statusBarColor:设置状态栏的颜色(仅此而已)
  • colorPrimaryDark:设置状态栏和上下文应用程序栏的颜色。

这就是当状态栏的statusBarColor具有不同颜色时,statusBarColor优先于colorPrimaryDark的原因。