更改状态栏默认颜色

时间:2016-09-24 08:25:00

标签: android colors statusbar

当我打开我的应用程序一秒钟时,它会以蓝色显示状态栏,即使我将颜色声明为红色。

风格:         

        <style name="AppTheme" parent="Theme.AppCompat.DayNight.NoActionBar">
                <!-- Customize your theme here. -->
                <item name="colorPrimary">@color/colorPrimary</item>
                <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
                <item name="colorAccent">@color/colorAccent</item>
                <item name="android:statusBarColor">@color/colorPrimaryDark</item>

        </style>
</resources>

在Colors.xml中

<resources>
    <color name="colorPrimary">#a20dff</color>
    <color name="colorPrimaryDark">#ff0000</color>
    <color name="colorAccent">#FF4081</color>


</resources>

值得一提的是,我会在语法上将颜色更改为另一种颜色(由用户指定)。但是,就像第一秒一样,它看起来有点不同。

2 个答案:

答案 0 :(得分:0)

尝试将以下行添加到您的v21主题:

 <item name="android:windowDrawsSystemBarBackgrounds">true</item>

您可以通过以下方式进行编程:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
    Window window = getWindow();
    window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
    window.setStatusBarColor(Color.BLUE);
}

答案 1 :(得分:0)

实施以下方法(在您的活动中)

@TargetApi(Build.VERSION_CODES.LOLLIPOP)
public void setStatusBarColor(int statusBarColorResId) {

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP)
        getWindow().setStatusBarColor(getResources().getColor(statusBarColorResId));

    else Log.e("setStatusBarColor", "Operation not supported");
}

按如下方式调用(例如,来自onCreate)

setStatusBarColor(R.color.status_bar_color);