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
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.
<ProgressBar
Android:id="@+id/ProgressBar01"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:background = "@xml/progress">
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));
Le moyen le plus simple consiste à utiliser Android: attribut indeterminateTint:
<ProgressBar
Android:indeterminate="true"
Android:indeterminateTint="@Android:color/black"
........... />
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"/>
voici comment vous pouvez le faire avec du code Java.
progressBar.getProgressDrawable().setColorFilter(ContextCompat.getColor(getActivity(),R.color.product_status_color), PorterDuff.Mode.MULTIPLY)
vous pouvez aussi ne changer que l'attribut
Android:indeterminateDrawable="@drawable/yourxmlfile"
et garde ce style
style="@Android:style/Widget.ProgressBar.Small"
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" />
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.
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