Je suis sur un appareil Lollipop (MotoG 2014), j'ai lu des informations sur la coloration de la barre de progression, mais cela ne fonctionne pas ... J'ai la couleur de la barre de progression par défaut. Qu'est-ce que j'oublie ici?
<ProgressBar
style="?android:attr/progressBarStyleLarge"
Android:layout_width="50dp"
Android:layout_height="50dp"
Android:backgroundTintMode="src_in"
Android:indeterminate="true"
Android:indeterminateTint="#f00" />
Merci beaucoup.
La solution acceptée ne fonctionnait pas pour moi avant Lollipop, mais j'ai trouvé cette solution compatible avec toutes les API. De plus, elle n'utilise pas de code obsolète:
// fixes pre-Lollipop progressBar indeterminateDrawable tinting
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.Lollipop) {
Drawable wrapDrawable = DrawableCompat.wrap(mProgressBar.getIndeterminateDrawable());
DrawableCompat.setTint(wrapDrawable, ContextCompat.getColor(getContext(), Android.R.color.holo_green_light));
mProgressBar.setIndeterminateDrawable(DrawableCompat.unwrap(wrapDrawable));
} else {
mProgressBar.getIndeterminateDrawable().setColorFilter(ContextCompat.getColor(getContext(), Android.R.color.holo_green_light), PorterDuff.Mode.SRC_IN);
}
Bonne codage!
Essayez de changer votre ProgressBar
en ceci
<ProgressBar
Android:id="@+id/view_progress"
style="?android:attr/progressBarStyleLarge"
Android:layout_width="50dp"
Android:layout_height="50dp"
Android:indeterminate="true"
Android:indeterminateTintMode="src_in"
Android:indeterminateTint="@color/red"
/>
Aussi, vous pouvez le faire par programme en procédant comme suit:
ProgressBar progressBar;
progressBar = (ProgressBar)findViewById(R.id.view_progress);
progressBar.getProgressDrawable().setColorFilter(Color.RED, Mode.SRC_IN);
Pour éviter de teinter également l'arrière-plan ProgressBar
, vous devez obtenir une référence au bitmap exact à partir de la variable intérieure ProgressBar
LayerDrawable
. C’est une façon détournée de le faire, mais cela fonctionne.
LayerDrawable layerDrawable = (LayerDrawable) progressBar.getProgressDrawable();
Drawable drawable = layerDrawable.getDrawable(2); // The progress bitmap
drawable.setColorFilter(color, PorterDuff.Mode.SRC_IN);
/**change your progress drawable asrequired****/
Drawable wrapDrawable = DrawableCompat.wrap(_progress.getIndeterminateDrawable());
DrawableCompat.setTint(wrapDrawable, ContextCompat.getColor(this, R.color.colorOrange));
_progress.setIndeterminateDrawable(DrawableCompat.unwrap(wrapDrawable));