web-dev-qa-db-fra.com

Comment changer la couleur par défaut de la barre de progression?

J'utilise une circulaire ProgressBar dans mon Activty.My problème est que ce n'est pas visible correctement sur ma page parce que la couleur BG de ma page est identique à ProgressBar. Alors comment puis-je changer la couleur de ProgressBar pour le rendre correctement ? Please Help

21
AB1209

Veuillez créer un nom de fichier xml progress.xml, le placer dans le dossier res/xml et écrire le code ci-dessous dans ce fichier xml.

 <?xml version="1.0" encoding="utf-8"?>
<rotate xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:pivotX="50%" Android:pivotY="50%" Android:fromDegrees="0"
    Android:toDegrees="360">
    <shape Android:shape="ring" Android:innerRadiusRatio="3"
        Android:thicknessRatio="8" Android:useLevel="false">

        <size Android:width="76dip" Android:height="76dip" />
        <gradient Android:type="sweep" Android:useLevel="false"
            Android:startColor="#447a29" 
            Android:endColor="#447a29"
            Android:angle="0"
             />
    </shape>
</rotate> 

après avoir créé ce fichier xml, définissez votre fond Progressbars comme ce xml.

Comme

<ProgressBar
  Android:id="@+id/ProgressBar01" 
  Android:layout_width="wrap_content"
  Android:layout_height="wrap_content"
  Android:background = "@xml/progress">
43
Chirag

C'est une vieille question, mais l'utilisation de thème n'est pas mentionnée ici. Si votre thème par défaut utilise AppCompat, la couleur de votre ProgressBar sera colorAccent que vous avez définie. 

Changer colorAccent changera également la couleur de votre ProgressBar, mais ces changements se répercuteront également à plusieurs endroits. Donc, si vous voulez une couleur différente juste pour une ProgressBar spécifique, vous pouvez le faire en appliquant un thème à cette ProgressBar seule:

  • Étendez votre thème par défaut et remplacez colorAccent

    <style name="AppTheme.WhiteAccent">
        <item name="colorAccent">@color/white</item> <!-- Whatever color you want-->
    </style>
    
  • Et dans ProgressBar, ajoutez l'attribut Android:theme:

    Android:theme="@style/AppTheme.WhiteAccent"
    

Cela ressemblera à quelque chose comme ça:

<ProgressBar
        Android:id="@+id/loading"
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:layout_gravity="center"
        Android:padding="10dp"
        Android:theme="@style/AppTheme.WhiteAccent" />

Donc, vous changez simplement une colorAccent pour votre ProgressBar particulière.

Note: Utiliser style ne fonctionnera pas. Vous devez utiliser Android:theme uniquement . Vous pouvez trouver plus d’utilisation du thème ici: https://plus.google.com/u/0/+AndroidDevelopers/posts/JXHKyhsWHAH

Modifier

Voici le code pour changer la couleur de ProgressBar par programme.

ProgressBar progressBar = (ProgressBar) findViewById(R.id.pb_listProgressBar);
int colorCodeDark = Color.parseColor("#F44336");
progressBar.setIndeterminateTintList(ColorStateList.valueOf(colorCodeDark));
25
Naveen Kumar M

Le moyen le plus simple consiste à utiliser Android: attribut indeterminateTint:

<ProgressBar
        Android:indeterminate="true"
        Android:indeterminateTint="@Android:color/black"
        ........... />
8
Anupam KR

en xml u peut appliquer une couleur comme celle-ci

<ProgressBar
    Android:layout_width="wrap_content"
    Android:layout_height="wrap_content"
    Android:id="@+id/loader"
    Android:indeterminateTint="@color/my_color"
    Android:layout_centerInParent="true"/>
1
Aalap Patel

voici comment vous pouvez le faire avec du code Java.

progressBar.getProgressDrawable().setColorFilter(ContextCompat.getColor(getActivity(),R.color.product_status_color), PorterDuff.Mode.MULTIPLY)
0
vikas kumar

vous pouvez aussi ne changer que l'attribut

Android:indeterminateDrawable="@drawable/yourxmlfile"

et garde ce style 

style="@Android:style/Widget.ProgressBar.Small"
0
Jonathan Duque

créer un fichier progressable 

<?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" />
        <solid Android:color="@color/colorWhite" />
    </shape>
</item>

<item Android:id="@Android:id/secondaryProgress">
    <clip>
        <shape>
            <corners Android:radius="5dip" />
            <solid Android:color="@color/colorPrimary" />
        </shape>
    </clip>
</item>

<item Android:id="@Android:id/progress">
    <clip>
        <shape>
            <corners
                Android:radius="5dip" />
            <solid Android:color="@color/colorPrimary" />
        </shape>
    </clip>
</item>

et set Android: progressDrawable = "@ drawable/app_progressbar_back"

comme ça

<ProgressBar
                Android:id="@+id/dialogProgressView"
                style="?android:attr/progressBarStyleHorizontal"
                Android:layout_width="match_parent"
                Android:layout_height="wrap_content"
                Android:progressDrawable="@drawable/app_progressbar_back"
                Android:progress="50"
                Android:layout_marginTop="@dimen/margin_20" />
0
Pankaj Talaviya

Voici quelques explications. Pour changer l'arrière-plan d'un Indeterminate ProgressBar, vous avez besoin d'un anneau rotatif, car il tourne. Dans la réponse de @Chirag, il a défini un anneau en rotation et l'a appliqué à l'arrière-plan de ProgressBar. Si vous avez un Horizontal ProgressBar, vous avez besoin d'une rectangle

PS: Je n'ai pas essayé avec d'autres formes.

0
Birendra Singh

Vous pouvez également modifier la couleur de votre barre de progression par programme dans vos activités oncreate ou vos fragments onViewCreated ().

pBar.getIndeterminateDrawable().setColorFilter(0xFFFF0000, Android.graphics.PorterDuff.Mode.MULTIPLY);

Ici, la couleur appliquée est "0xFFFF0000" qui est rouge. Vous pouvez le changer selon vos besoins

0
emilpmp