How to change ProgressBar's progress indicator color in Android How to change ProgressBar's progress indicator color in Android android android

How to change ProgressBar's progress indicator color in Android


I copied this from one of my apps, so there's prob a few extra attributes, but should give you the idea. This is from the layout that has the progress bar:

<ProgressBar    android:id="@+id/ProgressBar"    style="?android:attr/progressBarStyleHorizontal"    android:layout_width="fill_parent"    android:layout_height="wrap_content"    android:indeterminate="false"    android:maxHeight="10dip"    android:minHeight="10dip"    android:progress="50"    android:progressDrawable="@drawable/greenprogress" />

Then create a new drawable with something similar to the following (In this case greenprogress.xml):

<?xml version="1.0" encoding="utf-8"?><layer-list xmlns:android="http://schemas.android.com/apk/res/android">    <item android:id="@android:id/background">        <shape>            <corners android:radius="5dip" />            <gradient                android:angle="270"                android:centerColor="#ff5a5d5a"                android:centerY="0.75"                android:endColor="#ff747674"                android:startColor="#ff9d9e9d" />        </shape>    </item>    <item android:id="@android:id/secondaryProgress">        <clip>            <shape>                <corners android:radius="5dip" />                <gradient                    android:angle="270"                    android:centerColor="#80ffb600"                    android:centerY="0.75"                    android:endColor="#a0ffcb00"                    android:startColor="#80ffd300" />            </shape>        </clip>    </item>    <item android:id="@android:id/progress">        <clip>            <shape>                <corners android:radius="5dip" />                <gradient                    android:angle="270"                    android:endColor="#008000"                    android:startColor="#33FF33" />            </shape>        </clip>    </item></layer-list>

You can change up the colors as needed, this will give you a green progress bar.


A simpler solution:

progess_drawable_blue

<?xml version="1.0" encoding="utf-8"?><layer-list xmlns:android="http://schemas.android.com/apk/res/android"><item android:id="@android:id/background">    <shape>        <solid                android:color="@color/disabled" />    </shape></item><item    android:id="@android:id/progress">    <clip>        <shape>            <solid                android:color="@color/blue" />        </shape>    </clip></item></layer-list>


Just create a style in values/styles.xml.

<style name="ProgressBarStyle">    <item name="colorAccent">@color/greenLight</item></style>

Then set this style as your ProgressBar theme.

<ProgressBar    android:theme="@style/ProgressBarStyle"    android:layout_width="match_parent"    android:layout_height="wrap_content"/>

and doesn't matter your progress bar is horizontal or circular.That's all.