2016-09-06 59 views
9

我想改變高亮條的顏色Android Studio中:如何更改Android中狀態欄的顏色?

enter image description here

我該怎麼辦呢?

+0

你說的是狀態欄或電話的底部酒吧或其他什麼東西?請更具體的 – KDeogharkar

+1

@KDeogharkar圖片是告訴所有的事情。我不知道這個術語。 – Humty

+0

ohk我無法看到它。 imgur阻止我結束。我的錯誤 – KDeogharkar

回答

17

您可以通過設置您使用的是您的應用程序的風格android:statusBarColorandroid:colorPrimaryDark屬性在styles.xml改變它。

android:statusBarColor繼承默認的android:colorPrimaryDark值)

例如(因爲我們在這裏使用程序兼容性的主題,省略了android命名空間):

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> 
    <item name="colorPrimaryDark">@color/your_custom_color</item> 
</style> 

在API層面21+您也可以使用代碼中的Window.setStatusBarColor()方法。

-2

注意: - 在api級別19或21以及api級別以上支持狀態欄顏色。
請檢查此鏈接:change status bar color

1
<item name="colorPrimaryDark">@color/your_color</item> 

將只在棒棒堂可見,比棒棒堂(API)的設備更大。 P.S.您需要將Theme.AppCompat作爲您的基本/主要主題

11

狀態欄是操作系統擁有的系統窗口。 在5.0之前的Android設備上,應用程序沒有權限更改其顏色,所以這不是AppCompat庫可以支持的老版平臺版本。最好的AppCompat可以做的是爲應用程序中的ActionBar和其他常用UI小部件着色提供支持。

在5.0之後的Android設備上, 改變狀態欄的顏色也需要在窗口上設置兩個附加標誌;您需要添加FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS標誌並清除FLAG_TRANSLUCENT_STATUS標誌。

Window window = activity.getWindow(); 

// clear FLAG_TRANSLUCENT_STATUS flag: 
window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS); 

// add FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS flag to the window 
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS); 

// finally change the color 
window.setStatusBarColor(activity.getResources().getColor(R.color.my_statusbar_color)); 
2

您也可以在主要活動中添加幾行代碼

if (Build.VERSION.SDK_INT >= 21) { 
     getWindow().setNavigationBarColor(ContextCompat.getColor(this, R.color.dark_nav)); // Navigation bar the soft bottom of some phones like nexus and some Samsung note series 
     getWindow().setStatusBarColor(ContextCompat.getColor(this,R.color.statusbar)); //status bar or the time bar at the top 
     }