Come modificare la barra di avanzamento del progresso colore in Android
-
19-09-2019 - |
Domanda
Sto usando un orizzontale barra di avanzamento nella mia applicazione Android, e voglio cambiare il suo progresso colore (che è di default Giallo).Come posso fare utilizzando code
(non XML)?
Soluzione
Mi dispiace che non è la risposta, ma ciò che sta guidando l'impostazione dal codice requisito?
E .setProgressDrawable
dovrebbe funzionare se è definito correttamente
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@android:id/background">
<shape>
<corners android:radius="5dip" />
<gradient
android:startColor="#ff9d9e9d"
android:centerColor="#ff5a5d5a"
android:centerY="0.75"
android:endColor="#ff747674"
android:angle="270"
/>
</shape>
</item>
<item android:id="@android:id/secondaryProgress">
<clip>
<shape>
<corners android:radius="5dip" />
<gradient
android:startColor="#80ffd300"
android:centerColor="#80ffb600"
android:centerY="0.75"
android:endColor="#a0ffcb00"
android:angle="270"
/>
</shape>
</clip>
</item>
<item android:id="@android:id/progress">
<clip>
<shape>
<corners
android:radius="5dip" />
<gradient
android:startColor="@color/progress_start"
android:endColor="@color/progress_end"
android:angle="270"
/>
</shape>
</clip>
</item>
</layer-list>
Altri suggerimenti
Per un ProgressBar orizzontale, è possibile utilizzare un ColorFilter
, anche, in questo modo:
progressBar.getProgressDrawable().setColorFilter(
Color.RED, android.graphics.PorterDuff.Mode.SRC_IN);
Nota: Questa modifica l'aspetto di tutte le barre di avanzamento nella vostra app. Per modificare solo una specifica barra di avanzamento, fare questo:
Drawable progressDrawable = progressBar.getProgressDrawable().mutate();
progressDrawable.setColorFilter(Color.RED, android.graphics.PorterDuff.Mode.SRC_IN);
progressBar.setProgressDrawable(progressDrawable);
Se Progressbar è indeterminato quindi utilizzare getIndeterminateDrawable()
invece di getProgressDrawable()
.
Da Lollipop (API 21) è possibile impostare una tinta corso:
progressBar.setProgressTintList(ColorStateList.valueOf(Color.RED));
Questa non è a livello di codice, ma penso che potrebbe aiutare un sacco di gente in ogni caso.
Ho provato un sacco e il modo più efficace è stato quello di aggiungere queste righe al mio ProgressBar nel file XML:
android:indeterminate="true"
android:indeterminateTintMode="src_atop"
android:indeterminateTint="@color/secondary"
Così, alla fine di questo codice ha fatto per me:
<ProgressBar
android:id="@+id/progressBar"
style="?android:attr/progressBarStyleLarge"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:layout_marginTop="50dp"
android:layout_marginBottom="50dp"
android:visibility="visible"
android:indeterminate="true"
android:indeterminateTintMode="src_atop"
android:indeterminateTint="@color/secondary">
Questa soluzione funziona per API 21 +
Per il mio progressbar indeterminata (filatore) Ho appena creato un filtro di colore sul drawable. Funziona alla grande e una sola riga.
Esempio dove il colore rosso impostazione:
ProgressBar spinner = new android.widget.ProgressBar(
context,
null,
android.R.attr.progressBarStyle);
spinner.getIndeterminateDrawable().setColorFilter(0xFFFF0000, android.graphics.PorterDuff.Mode.MULTIPLY);
Questa è una vecchia questione, ma utilizzando tema non è menzionato qui. Se il tema di default sta usando AppCompat
, il colore del vostro ProgressBar
verrà colorAccent
avete definito.
La modifica colorAccent
cambierà anche il colore del vostro ProgressBar
, ma cambia anche riflette in più luoghi. Quindi, se si desidera un colore diverso solo per un PregressBar
specifica è possibile farlo applicando tema che ProgressBar
:
-
Estendere il tema di default e sovrascrivere
colorAccent
<style name="AppTheme.WhiteAccent"> <item name="colorAccent">@color/white</item> <!-- Whatever color you want--> </style>
-
E nel
ProgressBar
aggiungere l'attributoandroid:theme
:android:theme="@style/AppTheme.WhiteAccent"
Così sarà simile a questa:
<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" />
Quindi, si sta solo cambiando un colorAccent
per il vostro particolare ProgressBar
.
Nota: Usando style
non funzionerà. È necessario utilizzare solo android:theme
.
Potete trovare più uso di tema qui: https://plus.google.com/u/0/ + AndroidDevelopers / messaggi / JXHKyhsWHAH
Tutti API
se l'uso tutte le API basta creare il tema in stile
style.xml
<resources>
//...
<style name="progressBarBlue" parent="@style/Theme.AppCompat">
<item name="colorAccent">@color/blue</item>
</style>
</resources>
e utilizzare in corso
<ProgressBar
...
android:theme="@style/progressBarBlue" />
livello API 21 e superiore
se utilizzato in livello API 21 e superiori basta usare questo codice:
<ProgressBar
//...
android:indeterminate="true"
android:indeterminateTintMode="src_atop"
android:indeterminateTint="@color/secondary"/>
come per alcuni dei suggerimenti, è possibile specificare una forma e clipdrawable con un colore, quindi impostarlo. Ho questo lavoro programatically. Questo è come lo faccio ..
Prima di tutto assicuratevi di importare la libreria drawable ..
import android.graphics.drawable.*;
Quindi utilizzare il codice simile al di sotto;
ProgressBar pg = (ProgressBar)row.findViewById(R.id.progress);
final float[] roundedCorners = new float[] { 5, 5, 5, 5, 5, 5, 5, 5 };
pgDrawable = new ShapeDrawable(new RoundRectShape(roundedCorners, null,null));
String MyColor = "#FF00FF";
pgDrawable.getPaint().setColor(Color.parseColor(MyColor));
ClipDrawable progress = new ClipDrawable(pgDrawable, Gravity.LEFT, ClipDrawable.HORIZONTAL);
pg.setProgressDrawable(progress);
pg.setBackgroundDrawable(getResources().getDrawable(android.R.drawable.progress_horizontal));
pg.setProgress(45);
Questo ha funzionato per me:
<ProgressBar
android:indeterminateTint="#d60909"
... />
se Indeterminato:
((ProgressBar)findViewById(R.id.progressBar))
.getIndeterminateDrawable()
.setColorFilter(Color.RED, PorterDuff.Mode.SRC_IN);
Al giorno d'oggi nel 2016 ho trovato alcuni dispositivi pre-lecca non rispettano l'impostazione colorAccent
, quindi la mia soluzione finale per tutte le API è ora la seguente:
// 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);
}
Per i punti bonus, non fa uso di alcun codice deprecato. Provalo!
Questo è quello che ho fatto. Ha lavorato.
ProgressBar:
<ProgressBar
android:id="@+id/progressBar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="4"
android:indeterminateDrawable="@drawable/progressdrawable"
/>
progressdrawable.xml:
Qui usano gradiente di cambiare colore mentre gradite. E Android: toDegrees = "X" increse il valore di X e progressbar ruotano velocemente. Diminuire e ruotare slow.Customize base alle proprie esigenze.
<?xml version="1.0" encoding="utf-8"?>
<rotate xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="4000"
android:fromDegrees="0"
android:pivotX="50%"
android:pivotY="50%"
android:toDegrees="360" >
<shape
android:innerRadius="20dp"
android:shape="ring"
android:thickness="4dp"
android:useLevel="false" >
<size
android:height="48dp"
android:width="48dp" />
<gradient
android:centerColor="#80ec7e2a"
android:centerY="0.5"
android:endColor="#ffec7e2a"
android:startColor="#00ec7e2a"
android:type="sweep"
android:useLevel="false" />
</shape>
</rotate>
Hit lo stesso problema mentre si lavora sulla modifica il look / feel della barra di avanzamento di default. Ecco qualche informazione in più che, si spera aiutare le persone:)
- Il nome del file XML deve contenere solo caratteri:
a-z0-9_.
(vale a dire senza capitali.!)
- Per fare riferimento il vostro "disegnabile" è
R.drawable.filename
- Per ignorare l'aspetto di default, è possibile utilizzare
myProgressBar.setProgressDrawable(...)
, tuttavia è necessario non si può semplicemente consultare il layout personalizzato comeR.drawable.filename
, è necessario recuperare come unDrawable
:Resources res = getResources(); myProgressBar.setProgressDrawable(res.getDrawable(R.drawable.filename);
- È necessario impostare lo stile prima di impostare il progresso / avanzamento secondaria / max (impostando poi per me ha comportato un barra di avanzamento 'vuoto')
Probabilmente c'è una cosa che non è stata di cui al presente risposta:
Se il tema eredita dal Theme.AppCompat
, ProgressBar
assumerà il colore definito come "colorAccent"
nel tema.
Quindi, utilizzando ..
<item name="colorAccent">@color/custom_color</item>
.. consente di colorare l'colore della ProgressBar automagicamente al @color/custom_color
.
Come ho fatto in ProgressBar orizzontale:
LayerDrawable layerDrawable = (LayerDrawable) progressBar.getProgressDrawable();
Drawable progressDrawable = layerDrawable.findDrawableByLayerId(android.R.id.progress);
progressDrawable.setColorFilter(color, PorterDuff.Mode.SRC_IN);
Si può cercare di cambiare gli stili, temi, oppure utilizzando Android: indeterminateTint = "@ colore / yourColor" ovunque si desidera, ma c'è solo un modo o fare che funzionerà su qualsiasi versione SKD Android:
Se si procede a barre non è indeterminato, si prega di utilizzare:
progressBar.getProgressDrawable().setColorFilter(ContextCompat.getColor(context, R.color.yourColor), PorterDuff.Mode.SRC_IN );
Se si procede bar è indeterminata, si prega di utilizzare:
progressBar.getIndeterminateDrawable().setColorFilter(ContextCompat.getColor(getContext(), R.color.yourColor), PorterDuff.Mode.SRC_IN );
E 'triste che Android è un tale casino!
android:progressTint="#ffffff"
più semplice soluzione se si desidera cambiare il colore nel file di layout XML, utilizzare il codice qui sotto e utilizzare indeterminateTint proprietà per il vostro colore desiderato.
<ProgressBar
android:id="@+id/progressBar"
style="?android:attr/progressBarStyle"
android:layout_width="wrap_content"
android:indeterminate="true"
android:indeterminateTintMode="src_atop"
android:indeterminateTint="#ddbd4e"
android:layout_height="wrap_content"
android:layout_marginBottom="20dp"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true" />
Questa soluzione ha funzionato per me:
<style name="Progressbar.White" parent="AppTheme">
<item name="colorControlActivated">@color/white</item>
</style>
<ProgressBar
android:layout_width="@dimen/d_40"
android:layout_height="@dimen/d_40"
android:indeterminate="true"
android:theme="@style/Progressbar.White"/>
Ancora una piccola cosa, la soluzione tema non funziona se si eredita un tema di base, quindi per app compattare il tema dovrebbe essere:
<style name="AppTheme.Custom" parent="@style/Theme.AppCompat">
<item name="colorAccent">@color/custom</item>
</style>
E poi impostare questo tema nella barra di avanzamento
<ProgressBar
android:id="@+id/progressCircle_progressBar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:theme="@style/AppTheme.Custom"
android:indeterminate="true"/>
Inviato aggiungere informazioni sulla di PaulieG risposta , dal momento che ateiob mi ha chiesto di spiegare qualcosa ...
posso dire che non v'è (o almeno era, al momento della scrittura quando ho guardato che la versione corrente del codice sorgente di Android) un bug / problema / ottimizzazione nel codice ProgressBar
che ignora un tentativo di impostare lo stato di avanzamento ad un valore che è già.
- vale a dire. se il progresso = 45, e si tenta di impostare a 45, il codice non fa nulla, e non ridisegnare lo stato di avanzamento .
Dopo aver chiamato ProgressBar.setProgressDrawable()
, la vostra barra di avanzamento sarà vuoto (perché è stata modificata la parte drawable).
Questo significa che è necessario impostare il progresso, e ridisegnare esso. Ma se è sufficiente impostare l'avanzamento ad un valore conservato, esso non farà nulla.
È necessario impostare a 0, poi per il valore "vecchio" di nuovo, e il bar sarà ridisegnare.
Quindi, per riassumere:
- preservare il "vecchio" valore progresso
- aggiornare il drawable / colore (fa bar vuoto)
- azzerare i progressi a 0 (riga successiva altrimenti non fa nulla)
- ripristinare i progressi per il "vecchio" valore (correzioni bar)
- invalidate
Di seguito è riportato un metodo che ho che fa questo:
protected void onResume()
{
super.onResume();
progBar = (ProgressBar) findViewById(R.id.progress_base);
int oldProgress = progBar.getProgress();
// define new drawable/colour
final float[] roundedCorners = new float[]
{ 5, 5, 5, 5, 5, 5, 5, 5 };
ShapeDrawable shape = new ShapeDrawable(new RoundRectShape(
roundedCorners, null, null));
String MyColor = "#FF00FF";
shape.getPaint().setColor(Color.parseColor(MyColor));
ClipDrawable clip = new ClipDrawable(shape, Gravity.LEFT,
ClipDrawable.HORIZONTAL);
progBar.setProgressDrawable(clip);
progBar.setBackgroundDrawable(getResources().getDrawable(
android.R.drawable.progress_horizontal));
// work around: setProgress() ignores a change to the same value
progBar.setProgress(0);
progBar.setProgress(oldProgress);
progBar.invalidate();
}
Per quanto riguarda la soluzione di HappyEngineer, penso che sia stata una soluzione simile, per impostare manualmente il "progresso" offset. In entrambi i casi, il codice di cui sopra dovrebbe funzionare per voi.
Utilizza il android.support.v4.graphics. drawable.DrawableCompat :
Drawable progressDrawable = progressBar.getIndeterminateDrawable();
if (progressDrawable != null) {
Drawable mutateDrawable = progressDrawable.mutate();
DrawableCompat.setTint(mutateDrawable, primaryColor);
progressBar.setProgressDrawable(mutateDrawable);
}
Per un ProgressBar stile orizzontale che uso:
import android.widget.ProgressBar;
import android.graphics.drawable.GradientDrawable;
import android.graphics.drawable.ClipDrawable;
import android.view.Gravity;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.LayerDrawable;
public void setColours(ProgressBar progressBar,
int bgCol1, int bgCol2,
int fg1Col1, int fg1Col2, int value1,
int fg2Col1, int fg2Col2, int value2)
{
//If solid colours are required for an element, then set
//that elements Col1 param s the same as its Col2 param
//(eg fg1Col1 == fg1Col2).
//fgGradDirection and/or bgGradDirection could be parameters
//if you require other gradient directions eg LEFT_RIGHT.
GradientDrawable.Orientation fgGradDirection
= GradientDrawable.Orientation.TOP_BOTTOM;
GradientDrawable.Orientation bgGradDirection
= GradientDrawable.Orientation.TOP_BOTTOM;
//Background
GradientDrawable bgGradDrawable = new GradientDrawable(
bgGradDirection, new int[]{bgCol1, bgCol2});
bgGradDrawable.setShape(GradientDrawable.RECTANGLE);
bgGradDrawable.setCornerRadius(5);
ClipDrawable bgclip = new ClipDrawable(
bgGradDrawable, Gravity.LEFT, ClipDrawable.HORIZONTAL);
bgclip.setLevel(10000);
//SecondaryProgress
GradientDrawable fg2GradDrawable = new GradientDrawable(
fgGradDirection, new int[]{fg2Col1, fg2Col2});
fg2GradDrawable.setShape(GradientDrawable.RECTANGLE);
fg2GradDrawable.setCornerRadius(5);
ClipDrawable fg2clip = new ClipDrawable(
fg2GradDrawable, Gravity.LEFT, ClipDrawable.HORIZONTAL);
//Progress
GradientDrawable fg1GradDrawable = new GradientDrawable(
fgGradDirection, new int[]{fg1Col1, fg1Col2});
fg1GradDrawable.setShape(GradientDrawable.RECTANGLE);
fg1GradDrawable.setCornerRadius(5);
ClipDrawable fg1clip = new ClipDrawable(
fg1GradDrawable, Gravity.LEFT, ClipDrawable.HORIZONTAL);
//Setup LayerDrawable and assign to progressBar
Drawable[] progressDrawables = {bgclip, fg2clip, fg1clip};
LayerDrawable progressLayerDrawable = new LayerDrawable(progressDrawables);
progressLayerDrawable.setId(0, android.R.id.background);
progressLayerDrawable.setId(1, android.R.id.secondaryProgress);
progressLayerDrawable.setId(2, android.R.id.progress);
//Copy the existing ProgressDrawable bounds to the new one.
Rect bounds = progressBar.getProgressDrawable().getBounds();
progressBar.setProgressDrawable(progressLayerDrawable);
progressBar.getProgressDrawable().setBounds(bounds);
// setProgress() ignores a change to the same value, so:
if (value1 == 0)
progressBar.setProgress(1);
else
progressBar.setProgress(0);
progressBar.setProgress(value1);
// setSecondaryProgress() ignores a change to the same value, so:
if (value2 == 0)
progressBar.setSecondaryProgress(1);
else
progressBar.setSecondaryProgress(0);
progressBar.setSecondaryProgress(value2);
//now force a redraw
progressBar.invalidate();
}
Una chiamata esempio potrebbe essere:
setColours(myProgressBar,
0xff303030, //bgCol1 grey
0xff909090, //bgCol2 lighter grey
0xff0000FF, //fg1Col1 blue
0xffFFFFFF, //fg1Col2 white
50, //value1
0xffFF0000, //fg2Col1 red
0xffFFFFFF, //fg2Col2 white
75); //value2
Se non è necessario il 'progresso secondaria' sufficiente impostare valore2 a valore1.
Applicare questo stile personalizzato alla barra di avanzamento.
<style name="customProgress" parent="@android:style/Widget.ProgressBar.Small">
<item name="android:indeterminateDrawable">@drawable/progress</item>
<item name="android:duration">40</item>
<item name="android:animationCache">true</item>
<item name="android:drawingCacheQuality">low</item>
<item name="android:persistentDrawingCache">animation</item>
</style>
@ drawable / progress.xml -
<?xml version="1.0" encoding="utf-8"?>
<animated-rotate xmlns:android="http://schemas.android.com/apk/res/android"
android:drawable="@drawable/spinner_white"
android:pivotX="50%"
android:pivotY="50%" />
Utilizzare questo tipo di immagine per la barra di avanzamento.
Per un migliore risultato è possibile utilizzare più immagini di progresso. E per favore non esitate utilizzando immagini, perché Android piattaforma stessa utilizzare le immagini per progressbar. Il codice viene estratto dal sdk:)
Ecco il codice per cambiare il colore della ProgressBar dal programmaticamente.
ProgressBar progressBar = (ProgressBar) findViewById(R.id.pb_listProgressBar);
int colorCodeDark = Color.parseColor("#F44336");
progressBar.setIndeterminateTintList(ColorStateList.valueOf(colorCodeDark));
ProgressBar freeRamPb = findViewById(R.id.free_ram_progress_bar);
freeRamPb.getProgressDrawable().setColorFilter(
Color.BLUE, android.graphics.PorterDuff.Mode.SRC_IN);
ProgressBar bar;
private Handler progressBarHandler = new Handler();
GradientDrawable progressGradientDrawable = new GradientDrawable(
GradientDrawable.Orientation.LEFT_RIGHT, new int[]{
0xff1e90ff,0xff006ab6,0xff367ba8});
ClipDrawable progressClipDrawable = new ClipDrawable(
progressGradientDrawable, Gravity.LEFT, ClipDrawable.HORIZONTAL);
Drawable[] progressDrawables = {
new ColorDrawable(0xffffffff),
progressClipDrawable, progressClipDrawable};
LayerDrawable progressLayerDrawable = new LayerDrawable(progressDrawables);
int status = 0;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// TODO Auto-generated method stub
setContentView(R.layout.startup);
bar = (ProgressBar) findViewById(R.id.start_page_progressBar);
bar.setProgress(0);
bar.setMax(100);
progressLayerDrawable.setId(0, android.R.id.background);
progressLayerDrawable.setId(1, android.R.id.secondaryProgress);
progressLayerDrawable.setId(2, android.R.id.progress);
bar.setProgressDrawable(progressLayerDrawable);
}
Questo mi ha aiutato a impostare un colore personalizzato per progressbar tramite il codice.Speranza che aiuta
Come per Muhammad-Adil suggerito per SDK ver 21 e sopra
android:indeterminateTint="@color/orange"
in Works XML per me, è abbastanza facile.
E 'così semplice utilizzando attr, se avete a che fare con le applicazioni Multistyle:
provare in questo modo:
Dichiarare sotto attributo attrs.xml
<attr name="circularProgressTheme" format="reference"></attr>
Incolla sotto il codice a styles.xml
<style name="ProgressThemeWhite" parent="ThemeOverlay.AppCompat.Light">
<item name="colorAccent">#FF0000</item>
</style>
<style name="circularProgressThemeWhite">
<item name="android:theme">@style/ProgressThemeWhite</item>
</style>
<style name="AppTheme" parent="Theme.AppCompat.NoActionBar">
<item name="circularProgressTheme">@style/circularProgressThemeWhite</item>
</style>
utilizzare barra di avanzamento come qui di seguito
<ProgressBar
style="?attr/circularProgressTheme"
android:id="@+id/commonProgress"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:visibility="visible"/>
avanzamento orizzontale stile materiale bar personalizzato:
Per modificare il colore di sfondo e il progresso della barra di avanzamento orizzontale.
<style name="MyProgressBar" parent="@style/Widget.AppCompat.ProgressBar.Horizontal">
<item name="android:progressBackgroundTint">#69f0ae</item>
<item name="android:progressTint">#b71c1c</item>
<item name="android:minWidth">200dp</item>
</style>
Applica alla barra di avanzamento impostando attributo di stile, per gli stili materiali personalizzati e di controllo barra di avanzamento personalizzato http://www.zoftino.com/android-progressbar-and-custom-progressbar-examples
Per cambiare il colore ProgressBar orizzontale (in Kotlin):
fun tintHorizontalProgress(progress: ProgressBar, @ColorInt color: Int = ContextCompat.getColor(progress.context, R.color.colorPrimary)){
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
progress.progressTintList = ColorStateList.valueOf(color)
} else{
val layerDrawable = progress.progressDrawable as? LayerDrawable
val progressDrawable = layerDrawable?.findDrawableByLayerId(android.R.id.progress)
progressDrawable?.setColorFilter(color, PorterDuff.Mode.SRC_ATOP)
}
}
Per cambiare colore indeterminato ProgressBar:
fun tintIndeterminateProgress(progress: ProgressBar, @ColorInt color: Int = ContextCompat.getColor(progress.context, R.color.colorPrimary)){
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
progress.indeterminateTintList = ColorStateList.valueOf(color)
} else {
(progress.indeterminateDrawable as? LayerDrawable)?.apply {
if (numberOfLayers >= 2) {
setId(0, android.R.id.progress)
setId(1, android.R.id.secondaryProgress)
val progressDrawable = findDrawableByLayerId(android.R.id.progress).mutate()
progressDrawable.setColorFilter(color, PorterDuff.Mode.SRC_ATOP)
}
}
}
}
Ed infine normalmente tinta ProgressBars pre-lollipop