30

I would like to change the color of highlighted bar in Android Studio:

enter image description here

How can i do it?

earthw0rmjim
  • 19,027
  • 9
  • 49
  • 63
Humty
  • 1,321
  • 3
  • 18
  • 35

11 Answers11

65

You can change it by setting the android:statusBarColor or android:colorPrimaryDark attribute of the style you're using for your app in styles.xml.

(android:statusBarColor inherits the value of android:colorPrimaryDark by default)

For example (since we're using an AppCompat theme here, the android namespace is omitted):

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

On API level 21+ you can also use the Window.setStatusBarColor() method from code.

From its docs:

For this to take effect, the window must be drawing the system bar backgrounds with WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS and WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS must not be set. If color is not opaque, consider setting View.SYSTEM_UI_FLAG_LAYOUT_STABLE and View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN.

To set these flags you could do something like this:

// getWindow() is a method of Activity
getWindow().addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
earthw0rmjim
  • 19,027
  • 9
  • 49
  • 63
29

The status bar is a system window owned by the operating system. On pre-5.0 Android devices, applications do not have permission to alter its color, so this is not something that the AppCompat library can support for older platform versions. The best AppCompat can do is provide support for coloring the ActionBar and other common UI widgets within the application.

On post-5.0 Android devices, Changing the color of status bar also requires setting two additional flags on the Window; you need to add the FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS flag and clear the FLAG_TRANSLUCENT_STATUS flag.

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));
salik latif
  • 293
  • 2
  • 5
19

You can also add these lines of code in the main activity

if (Build.VERSION.SDK_INT >= 21)
{
getWindow().setStatusBarColor(ContextCompat.getColor(this,R.color.statusbar)); //status bar or the time bar at the top (see example image1)

getWindow().setNavigationBarColor(ContextCompat.getColor(this, R.color.dark_nav)); // Navigation bar the soft bottom of some phones like nexus and some Samsung note series  (see example image2)
}

example image1 setStatusBarColor enter image description here

example image2 setNavigationBarColor enter image description here

Fakhar
  • 3,946
  • 39
  • 35
17

add the status bar color to your style and done

<item name="android:statusBarColor">@color/black</item>

this is for API level 21+

Masoud Darzi
  • 640
  • 9
  • 16
7

changing status bar color is available just for android above lollipop

1.you can change status bar color programmatically by this line:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
    getWindow().setStatusBarColor(ContextCompat.getColor(context, R.color.your_color));
}

2.you can do this with an smooth transition animation:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
    int startColor = getWindow().getStatusBarColor();
    int endColor = ContextCompat.getColor(context, R.color.your_color);
    ObjectAnimator.ofArgb(getWindow(), "statusBarColor", startColor, endColor).start();
}

3.or you can add this to your theme style in values/styles.xml file. item colorPrimaryDark will be used for your app status bar color

<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
codegames
  • 1,651
  • 18
  • 16
4
<item name="colorPrimaryDark">@color/your_color</item> 

will only be visible in Lollipop and greater than Lollipop(API) devices. P.S. you need to have Theme.AppCompat as your base/main theme

Aman Grover
  • 1,621
  • 1
  • 21
  • 41
1

If you use custom actionBar so you can try this one.

<style name="AppThemeBrowser" parent="Theme.AppCompat.NoActionBar">
    <item name="android:statusBarColor">@color/colorPrimaryDark</item>
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
</style>

Or if you use AppTheme actionBar so, you can try this one

 <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">

    <item name="android:statusBarColor">@color/colorPrimaryDark</item>
     ------------------------------------

</style>

Hope this will help you.

HappyCoding

Mukta
  • 1,357
  • 1
  • 15
  • 17
1

Change it in the themes as usual, like not using jetpack compose. colorPrimary and colorPrimaryVariant in themes and themes night.

enter image description here

<style name="Theme.AndroidDevChallenge" parent="Theme.MaterialComponents.DayNight.DarkActionBar">
    <!-- Primary brand color. -->
    <item name="colorPrimary">@color/SweetRed</item>
    <item name="colorPrimaryVariant">@color/SweetRedDarker</item>
    <item name="colorOnPrimary">@color/black</item>
    <!-- Secondary brand color. -->
    <item name="colorSecondary">@color/teal_200</item>
    <item name="colorSecondaryVariant">@color/teal_200</item>
    <item name="colorOnSecondary">@color/black</item>
    <!-- Status bar color. -->
    <item name="android:statusBarColor" tools:targetApi="l">?attr/colorPrimaryVariant</item>
    <!-- Customize your theme here. -->
</style>
FiqSky
  • 2,250
  • 1
  • 9
  • 8
1

Right click theme folders in the values folder, which is in the res folder :|

<!--write something like this in the color.xml, with your own color code-->

<color name="status_bar_light">#FFea80fc</color>
<color name="status_bar_dark">#FF263238</color>

In themes.xml, change colorPrimaryVariant to this

<item name="colorPrimaryVariant">@color/status_bar_light</item>

Add this in theme.xml(night)

<item name="colorPrimaryVariant">@color/status_bar_dark</item>

And there you have it, happy coding ;)

frankenapps
  • 5,800
  • 6
  • 28
  • 69
0

To change the color for particular activity just use

app:statusBarBackground="@color/colorPrimaryDark"

or any other color value in place of @color/colorPrimaryDark in the mail layout file of your desired activity in the parent layout tag like in my case default it was CoordinatorLayout which is parent of all (Keep all other layout within this CoordinatorLayout otherwise it may not work)

Hope this helps, this worked in my case although i'm not completely sure how.

Abhyam Gupta
  • 147
  • 4
  • 4
-5

Note:- Status bar color is supported on api level 19 or 21 and above api level.
Please check this Link : change status bar color

Garf365
  • 3,619
  • 5
  • 29
  • 41
Krunal Patel
  • 61
  • 3
  • 12