13

ho aggiunto una barra di avanzamento per la mia attività utilizzando il seguente codice:Come cambiare il colore della barra di avanzamento in Android - (ho cercato un modo, e non sta funzionando)

<LinearLayout 
    android:id="@+id/linlaHeaderProgress" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:gravity="center" 
    android:orientation="vertical" 
    android:visibility="gone" > 

    <ProgressBar 
     android:id="@+id/pbHeaderProgress" 
     android:indeterminateOnly="true" 
     android:keepScreenOn="true" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" > 
    </ProgressBar> 
</LinearLayout> 

Poi Lo chiamo:

progressbar = (LinearLayout) findViewById(R.id.linlaHeaderProgress); 
progressbar.setVisibility(View.VISIBLE); 

La barra di avanzamento viene visualizzata e voglio cambiarne il colore. Di default la barra di avanzamento è visualizzata in grigio. Ecco quello che ho provato a cambiare il colore:

ho creato un file xml nella cartella drawable e lo chiamò come activityindicator.xml Il contenuto di questo XML sono:

<layer-list xmlns:android="http://schemas.android.com/apk/res/android" > 

    <item android:id="@android:id/secondaryProgress"> 


     <color android:color="#f58233" /> 
    </item> 
    <item android:id="@android:id/progress"> 

     <color android:color="#f58233" /> 
    </item> 

</layer-list> 

E ho cambiato il file di layout come:

<LinearLayout 
    android:id="@+id/linlaHeaderProgress" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:gravity="center" 
    android:progressDrawable="@drawable/activityindicator" 
    android:orientation="vertical" 
    android:visibility="gone" > 

    <ProgressBar 
     android:id="@+id/pbHeaderProgress" 
     android:indeterminateOnly="true" 
     android:keepScreenOn="true" 
     android:progressDrawable="@drawable/activityindicator" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" > 
    </ProgressBar> 
</LinearLayout> 

Questo è quello che ho provato, ma il colore non sta cambiando. Qualcuno può dirmi cosa sto sbagliando?

Sto usando la versione Lollipop.

risposta

52

Se si desidera solo per cambiare i colori, aggiungere un filtro di colore alla vostra barra di avanzamento:

pbHeaderProgress.getIndeterminateDrawable().setColorFilter(Color.RED, Mode.MULTIPLY); 

Il parametro Mode, fa riferimento ai valori PorterDuff.Mode - disponibili here.

+1

questo dà la flessibilità di scegliere tra colors.xml anche progressBar.getProgressDrawable() setColorFilter (ContextCompat.getColor (getActivity(), R.color.product_status_color), PorterDuff.Mode.MULTIPLY) –

+1

Ti volevo se Color.WHITE e questa linea non funzionava. Ho dovuto cambiare la modalità portatore duff in SRC_ATOP –

+1

Questo metodo cambia colore di tutte le barre di avanzamento nell'app –

8

Ho appena trovato un modo. Non ho nemmeno bisogno di un file XML separato per cambiare il colore come la barra di avanzamento è di tipo "indeterminato: true"

ho usato il seguente per cambiare il colore della mia barra di avanzamento:

pbHeaderProgress.getIndeterminateDrawable().setColorFilter(Color.parseColor("#C0D000"), android.graphics.PorterDuff.Mode.SRC_ATOP); 

È possibile ottenere varietà di codici colore esadecimale da qui:. http://www.nthelp.com/colorcodes.htm o http://www.color-hex.com/