更改状态栏默认颜色

问题描述:

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

在款式:

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

值得一提的是,我在语法上改变颜色到另一种颜色(由用户指定)later.But,在很第一秒钟它是不同的,它看起来很丑。

+0

什么是你的设备的Android操作系统版本? –

+0

我的android版本是6.0 –

尝试用添加下面一行到你的V21主题:

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

OR

您可以通过编程像下面这样做:

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); 
} 
+0

我已经使用了第二种方法,它工作正常,但问题是我希望我的状态栏是红色的,当我的应用程序状态工作时,状态栏是蓝色的。我希望状态栏在应用程序启动后变成红色。 –

+0

更改'setStatusBarColor(Color.RED)'而不是'setStatusBarColor(Color.BLUE)'在状态栏中设置红色。 –

+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); 
+0

我知道那个家伙。我的问题是,当我启动应用程序一秒钟,它的颜色与我指定的颜色不同。想象一下,颜色是蓝色的一秒钟,然后变成红色。 –