How to change android indeterminate ProgressBar color?

AndroidAndroid Progressbar

Android Problem Overview


I would like to know how I can change indeterminate ProgressBar color from basis white/grey color to black ? When I change the indeterminateDrawable, I get a static image instead of a moving animated progressBar. Is there any way to do it simply in XML?

Android Solutions


Solution 1 - Android

progressBar.getIndeterminateDrawable().setColorFilter(
            getResources().getColor(Your_Color),
            android.graphics.PorterDuff.Mode.SRC_IN);

and replace Your_Color with the desired color like: R.color.your_color_code

Solution 2 - Android

To get a ProgressBar in the default theme that is to be used on white/light back ground, use one of the inverse styles:

<ProgressBar style="@android:style/Widget.ProgressBar.Inverse"/>
<ProgressBar style="@android:style/Widget.ProgressBar.Large.Inverse"/>
<ProgressBar style="@android:style/Widget.ProgressBar.Small.Inverse"/>

This will usually give you a black on transparent ProgressBar, but some OS installs use custom assets. If you're looking for a specific color, you'll have to roll your own drawables by following the instructions provided by CommonsWare.

Solution 3 - Android

I see other answers are quite old, in order to change the indeterminate ProgressBar color you have just to set android:indeterminateTint and android:indeterminateTintMode attributes in your ProgressBar item directly in XML:

<ProgressBar
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:indeterminateTint="@color/colorPrimary"
    android:indeterminateTintMode="src_in"
    android:indeterminate="true" />

android:indeterminateTint - Tint to apply to the indeterminate progress indicator. > Must be a color value, in the form of "#rgb", "#argb", "#rrggbb", "#aarrggbb", or a reference to a resource @color/colorPrimary.

android:indeterminateTintMode - Blending mode used to apply the progress indicator tint. > Must be one of the following constant values:
add, multiply, screen, src_atop, src_in or src_over

Getter and Setter methods for these attributes are:

All of them were added in API level 21

Solution 4 - Android

Solution 5 - Android

<?xml version="1.0" encoding="UTF-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:id="@android:id/background" android:drawable="@drawable/bg" />
    <item android:id="@android:id/secondaryProgress" android:drawable="@drawable/secondary" />
    <item android:id="@android:id/progress" android:drawable="@drawable/progress" />
</layer-list>

Solution 6 - Android

For API less than 23 use

progressBar.getIndeterminateDrawable().setColorFilter(
       getResources().getColor(Your_Color),
        android.graphics.PorterDuff.Mode.SRC_IN);

else use

progressBar.getIndeterminateDrawable().setColorFilter(
        ContextCompat.getColor(context, Your_Color),
        android.graphics.PorterDuff.Mode.SRC_IN);

Solution 7 - Android

Override android:colorControlActivated in your AppTheme which should be in your styles.xml:

<style name="AppTheme" parent="...">
    ...
    <item name="android:colorControlActivated">@color/beautiful_color</item>
    ...
</style>

Works on API 21+

Solution 8 - Android

With the Material Component Library you can use the CircularProgressIndicator with these attributes:

  • indicatorColor
  • trackColor

Something like:

<com.google.android.material.progressindicator.CircularProgressIndicator
       android:indeterminate="true"
       app:trackColor="@color/red600Light"
       app:indicatorColor="@color/red600Dark"
       app:indicatorSize="50dp"
       .../>

enter image description here

You can also use a Multi-color indeterminate indicator.

<com.google.android.material.progressindicator.CircularProgressIndicator
            android:indeterminate="true"
            app:trackColor="@color/red600Light"
            app:indicatorColor="@array/progress_colors"
            app:indeterminateAnimationType="contiguous"/>

with array/progress_colors:

  <integer-array name="progress_colors">
    <item>@color/...</item>
    <item>@color/...</item>
    <item>@color/...</item>
  </integer-array>

Solution 9 - Android

actually all u need to do (for both cirle and bar) is create an xml file in drawable as shown below...... progress_spinner_001 points to whatever image u want to animate and duration ... how long u want to display each frame for....... and set ur android:indeterminateDrawable= filename_in_drawable....

<?xml version="1.0" encoding="utf-8"?>
<animation-list
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:oneshot="false">
<item android:drawable="@drawable/progress_spinner_001" android:duration="300" />
<item android:drawable="@drawable/progress_spinner_002" android:duration="300" />
<item android:drawable="@drawable/progress_spinner_003" android:duration="300" />
  <item android:drawable="@drawable/progress_spinner_004" android:duration="300" />
    <item android:drawable="@drawable/progress_spinner_005" android:duration="300" />
      <item android:drawable="@drawable/progress_spinner_006" android:duration="300" />
     <item android:drawable="@drawable/progress_spinner_007" android:duration="300" />
    <item android:drawable="@drawable/progress_spinner_008" android:duration="300" />
</animation-list>

ps u may need to resize the progressbar to show as desired

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionmwaView Question on Stackoverflow
Solution 1 - AndroidZeyad AssemView Answer on Stackoverflow
Solution 2 - AndroidAnmView Answer on Stackoverflow
Solution 3 - AndroidCliff BurtonView Answer on Stackoverflow
Solution 4 - AndroidihrupinView Answer on Stackoverflow
Solution 5 - Androidandro_stackoverflowView Answer on Stackoverflow
Solution 6 - Androidyasirbhat564View Answer on Stackoverflow
Solution 7 - AndroidjanoschView Answer on Stackoverflow
Solution 8 - AndroidGabriele MariottiView Answer on Stackoverflow
Solution 9 - AndroidlawnileView Answer on Stackoverflow