21 Stimmen

Wie ändert man die Farbe einer unbestimmten ProgressBar?

Ich habe eine Fortschrittsleiste mit dem folgenden Stil: style="?android:attr/android:progressBarStyleSmall"

Leider ist die Leiste fast weiß und in meinem Fall auf einem weißen Hintergrund angezeigt. Die Fortschrittsleiste ist dadurch fast unsichtbar.

Wie kann ich die Farbe der Fortschrittsleiste ändern? Ein dunkleres Grau wäre toll.

41voto

Vishal Pandey Punkte 696
progressBar.getIndeterminateDrawable().setColorFilter(
            getResources().getColor(R.color.light_light_purple),
            android.graphics.PorterDuff.Mode.SRC_IN);

Dieser Code ändert die standardmäßige holo indeterminierte Zeichnungsfarbe in Ihre eigene Farbe. Definieren Sie Ihren Farbcode und ersetzen Sie R.color.light_light_purple durch R.color.your_color_code.

1 Stimmen

Dies sollte wirklich die akzeptierte Antwort sein. Ich habe erst kürzlich die Farbfiltermethode entdeckt, mit der Sie im Grunde genommen alles in beliebige Farben ändern können, und es ist ziemlich fantastisch.

0 Stimmen

Vielen Dank..! Bitte akzeptieren Sie meine Antwort für mehr Nutzen für andere :)

0 Stimmen

Ich musste diesen Ausschnitt nur für SDK-Versionen vor Lollipop verwenden. Daher habe ich diesen Ausschnitt in einer statischen Methode umschlossen: LegacyStyleUtil#adjustLegacyStyle(Context, ProgressBar). Dann rufe ich diese Methode von meinen Aktivitäten/Fragments aus auf. public static void adjustLegacyStyle(Context context, ProgressBar progressBar) { if (BuildConfigUtil.isLegacySDK() && progressBar != null) { progressBar.getIndeterminateDrawable().setColorFilter( context.getResources().getColor(R.color.green_progress), PorterDuff.Mode.SRC_IN); } }

25voto

Anm Punkte 3169

Um einen schwarzen ProgressBar zu erhalten, verwenden Sie einen der inversen Styles:

0 Stimmen

Das funktioniert nicht auf einem unserer Gingerbread-Modelle mit Cyanogen. Schade :(

10voto

Prashast Punkte 5615

Der Grund, warum die Leiste diese Farbe hat, liegt am von Ihnen ausgewählten Stil. Dies ist ein fester Stil und verwendet die Systemdesigns zur Erstellung von UI-Elementen.

Schauen Sie sich den Quellcode von hier an. Dieses Attribut progressBarStyleSmall verwendet die im hier definierten Stile.

    <item name="android:indeterminateDrawable">@android:drawable/progress_small_white</item>
    <item name="android:minWidth">16dip</item>
    <item name="android:maxWidth">16dip</item>
    <item name="android:minHeight">16dip</item>
    <item name="android:maxHeight">16dip</item>

Erstellen Sie einfach einen benutzerdefinierten Stil, indem Sie dem Beispiel im Android-Quellcode folgen. Sie müssten das android:indeterminateDrawable durch das ersetzen, was Sie möchten.

3voto

Casper-Nodes Punkte 81
public static void setColorOfProgressBar(ProgressBar mProgressBar, int mColor){
    mProgressBar.getIndeterminateDrawable().setColorFilter(mColor, android.graphics.PorterDuff.Mode.MULTIPLY);
}

2voto

Macarse Punkte 89366

Ich hatte eine sehr schwierige Zeit, als ich versuchte, die Farbe zu ändern. Um das Problem zu lösen, habe ich den Quellcode von Android erhalten und meine eigene ProgressBar-Klasse erstellt.

Nicht die beste Lösung, aber es hat für mich funktioniert.

5 Stimmen

Kannst du bitte die Klasse teilen?

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X