Ich befinde mich auf einem Lollipop-Gerät (MotoG 2014). Ich las über das Fortschrittsbalken-Tönen, aber das funktioniert nicht ... Ich bekomme die Standard-Fortschrittsbalkenfarbe. Was fehlt mir hier?
<ProgressBar
style="?android:attr/progressBarStyleLarge"
Android:layout_width="50dp"
Android:layout_height="50dp"
Android:backgroundTintMode="src_in"
Android:indeterminate="true"
Android:indeterminateTint="#f00" />
Danke vielmals.
Die akzeptierte Lösung funktionierte für Pre-Lollipop nicht, aber ich fand diese Lösung für alle APIs. Außerdem wurde kein veralteter Code verwendet:
// 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);
}
Viel Spaß beim Codieren!
Versuchen Sie, Ihre ProgressBar
hier zu ändern
<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"
/>
Sie können dies auch programmgesteuert tun:
ProgressBar progressBar;
progressBar = (ProgressBar)findViewById(R.id.view_progress);
progressBar.getProgressDrawable().setColorFilter(Color.RED, Mode.SRC_IN);
Um zu vermeiden, dass auch der Hintergrund der ProgressBar
eingefärbt wird, sollten Sie einen Verweis auf die genaue Bitmap von der inneren ProgressBar
LayerDrawable
erhalten. Dies ist eine harte Art, es zu tun, aber es funktioniert.
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));