How to Change the Color of Status Bar in an Android App?

A Status Bar in Android is an eye-catching part of the screen, all of the notification indications, battery life, time, connection strength, and plenty of things are shown here. An Android user may look at a status bar multiple times while using an Android application. It is a very essential part of the design that the color of the status bar should follow the color combination of the layout. You can look out at many Android apps on your phone and can see how they changed it according to their primary colors.

Methods to Change the Color of the Status Bar

There can be multiple ways for changing the status bar color but we are going to tell you about the best hand-picked two methods which you can use either in Java or Kotlin. The two easy methods are mentioned below:

  • Creating using a New Theme
  • Using setStatusBarColor Method

Creating a New Theme

You can follow this method in apps that are built with Kotlin or Java. It will work in both.

Step 1: Create New Projects

Open Android Studio and start a new project by selecting an empty activity. Give it a name of your choice, then select your language and API level. At last click on finish.

Step 2: Navigating/Creating styles.xml File

Find an XML file called styles.xml by navigating res/values/styles.xml. And in the case, you don’t find a style.xml file create styles.xml in the location res/values/styles.xml.

Step 3: Make Changes in colors.xml File

Find another XML file by navigating res/values/colors.xml, and also add that color here which you want to change for the status bar. 

XML
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="black">#000000</color>
    <color name="white">#FFFFFFFF</color>
    <color name="purple">#A203FF</color>
      <color name="color-Primary">#6200EE</color>
      <color name="color-PrimaryDark">#3700B3</color>
      <color name="color-Accent">#03DAC5</color>
</resources>


These are the color code for the colors which we are either using or can use.

Step 4: Adding the Code in the styles.xml File

Now in the style.xml file, add the below code just before the </resources> tag and change the colors of it as your choice. ColorPrimaryDark is always going to be responsible for your status bar color. 

XML
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="DemoTheme" parent="Theme.AppCompat.Light.NoActionBar">
      
          <!-- Customize your theme here. -->
        <item name="colorPrimary">@color/color-Primary</item>
        <item name="colorAccent">@color/color-Accent</item>
          
        <!-- Defining that new color in ColorPrimaryDark -->
        <item name="colorPrimaryDark">@color/color-PrimaryDark</item>
    </style>
</resources>


You can do the same with android:statusBarColor but it will work only in above API Level 21. ColorPrimaryDark for the status bar will also not support in API Level 19. By default in most of the API Levels, ColorPrimaryDark will be the default color for statusBarColor, So it is good to go with changing ColorPrimaryDark. 

Tip: You can create multiple themes and you can use them in any activity. In any theme, There is a set of colors that needs to be defined, you can also create new colors in the colors.xml file in the same directory and use it on the styles.xml file.

Step 6: Adding the New Theme to the Application

Now go to the manifest/AndroidManifest.xml and here search the activity for which you want to apply that theme or change the color of the status bar. and add an attribute to AndroidManifest.xml file.

android:theme = "@style/DemoTheme"

That’s done! Check your application by running it on an emulator or a physical device.

Using setStatusBarColor Method

This method can be only used in the above API Level 21. Officially status bar color is not supporting below API Level 21. Although, Here we added an if condition, because in case if you haven’t selected above or equal to API 21 then it will check the android API Version, and then it will execute the code. It will not change the color of the status bar is below API Level 21 but the rest code will work well.

Step 1: Create a New Projects

After opening the android studio and creating a new project with an empty activity.

Step 2: Update and Add Color in the colors.xml file

Navigate to res/values/colors.xml, and add a color that you want to change for the status bar. Add the color mentioned below:

<color name="colorPrimaryDark">#3700B3</color>

Step 3: Add Code Snippet to Update Status Bar Color

In your MainActivity, add this code in your onCreate method. Don’t forget to replace your desired color with colorName

Java
if (Build.VERSION.SDK_INT >= 21) {
            Window window = this.getWindow();
            window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
            window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
            window.setStatusBarColor(this.getResources().getColor(R.color.colorPrimaryDark));
        }
Kotlin
if (Build.VERSION.SDK_INT >= 21) {
            val window = this.window
            window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS)
            window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS)
            window.statusBarColor = this.resources.getColor(R.color.colorPrimaryDark)
        }


Step 4: Try running your application on an android emulator or a physical device. See the changes.