2016-09-24 306 views
0

當我打開我的應用程序一秒鐘時,它會以藍色顯示狀態欄,即使我聲明顏色爲紅色。更改狀態欄默認顏色

在款式:

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

回答

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

我知道那個傢伙。我的問題是,當我啓動應用程序一秒鐘,它的顏色與我指定的顏色不同。想象一下,顏色是藍色的一秒鐘,然後變成紅色。 –

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

我知道那個傢伙。我的問題是,當我啓動應用程序一秒鐘,它的顏色與我指定的顏色不同。想象一下,顏色是藍色的一秒鐘,然後變成紅色。 –