2 Stimmen

Wenn die Farbe der Fortschrittsleiste geändert wird, wird die Fortschrittsleiste nicht angezeigt

Nach der Suche auf der Website habe ich den folgenden Code gefunden, um die Farbe meiner Fortschrittsleiste zu ändern. Dies funktioniert gut, wenn ich den Code zum ersten Mal aufrufe (Fortschrittsbalken ändert sich in grün), aber jedes Mal, nachdem ich den Code aufrufe, bekomme ich einen leeren Fortschrittsbalken. Hat jemand dieses Problem schon einmal gehabt? Wenn ja, was war die Lösung, um die Farbe der Fortschrittsleiste bei jedem Aufruf von "setProgressDrawable" zu ändern?

<?xml version="1.0" encoding="utf-8"?>
    <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/greenStart"
                android:centerColor="@color/greenMid"
                android:centerY="0.75"
                android:endColor="@color/greenEnd"
                android:angle="270"
        />
    </shape>
</clip>
</item>

</layer-list>

Definieren Sie Farben in der Datei strings.xml

<color name="greenStart">#ff33dd44</color>
<color name="greenMid">#ff0A8815</color>
<color name="greenEnd">#ff1da130</color>

Code zum Ändern der Farbe

 Rect bounds = bar.getProgressDrawable().getBounds();
 bar.setProgressDrawable(getResources().getDrawable(R.drawable.green_progress));
 bar.getProgressDrawable().setBounds(bounds);

2voto

Mark Punkte 183

Ich habe endlich eine Lösung für mein Problem gefunden. Der Fortschrittsbalken würde leer werden, wenn die Farbe, die ich änderte, die gleiche Farbe war, die bereits eingestellt war. Also mit meinem Code oben das erste Mal die Fortschrittsanzeige würde von der Standard-gelb zu grün ändern. Beim nächsten Aufruf des Codes wurde der Fortschrittsbalken (der bereits auf grün gesetzt war) jedoch wieder auf grün gesetzt, und infolgedessen wurde der gesamte Fortschrittsbalken leer.

Um dies zu umgehen, habe ich die aktuell angezeigte Farbe des Fortschrittsbalkens aufgezeichnet, und wenn ich die Farbe wieder einstellen möchte, stelle ich sie nur ein, wenn sie sich von der aktuell angezeigten Farbe unterscheidet.

Ich hoffe, dies hilft anderen, die sich in der gleichen Situation befinden.

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