Android ProgressBar.setProgressDrawable funktioniert nur einmal?

In einer Farbauswahl habe ich 3 SeekBars für Farbton, Sättigung und Wert. Das Aufrufen von setProgressDrawable auf diesen SeekBars funktioniert nur einmal – bei der Initialisierung von onCreate. Wenn der Benutzer die Hue SeekBar aktualisiert, möchte ich setProgressDrawable für die Sättigungs- und Wert-SeekBars aufrufen, um dem Benutzer die Farbauswahl für den neuen Farbton zu zeigen.

Aber alle Anrufe auf setProgressDrawable (nach den ersten von onCreate ) verursachen die SeekBar zu löschen.

Wie kann ich den Hintergrundgradienten meiner SeekBars basierend auf Benutzereingaben aktualisieren?

  • Wie ändere ich die Farbe des Daumens in der Suchmaschine?
  • Wie man seekbar-bar-thumb-centering-Probleme beheben kann
  • Wie kann man den Look eines SeekBar in Android anpassen?
  • Android disable seek bar für Audio-Controller
  • Android SeekBar zur Kontrolle des MediaPlayer-Fortschritts
  • Setzen Sie SeekBars Fortschrittsfarbe auf transparent
  • Custom seekbar (Daumengröße, Farbe und Hintergrund)
  • Seekbar's Daumen auf Klick
  • 2 Solutions collect form web for “Android ProgressBar.setProgressDrawable funktioniert nur einmal?”

    Was ich herausgefunden habe, ist, dass das Ziehbare nicht weiß, dass es Größe ist, wenn setprogressdrawable aufgerufen wird. Wenn es anfänglich eingerichtet ist, weiß es, dass es Größe ist. Dies bedeutet, dass es einen neuen ziehbaren Satz auf die seekbar gibt, aber die Größe des Ziehbaren ist 0, du wirst nichts sehen.

    Die Lösung besteht darin, zuerst die Grenzen des aktuellen Ziehbaren zu erhalten, dann das neue Ziehbares einzustellen und schließlich die Grenzen wieder einzustellen:

     Rect bounds = mySeekBar.getProgressDrawable().getBounds(); mySeekBar.setProgressDrawable(newSeekBarBackground); mySeekBar.getProgressDrawable().setBounds(bounds); 

    Hey, ich habe die Lösungen dazu bekommen, du musst zuerst die Zeichnung auf die ProgressBar setzen, indem du setProgresssDrawable (ziehbar) anrufst und nur dann den Wert und nicht umgekehrt stellst. Das wird funktionieren

    Um einen Fortschritt zu machen:

    Verwenden Sie eine zeichnbare XML-Datei wie diese:

     <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="#00CCCC" android:centerColor="#00CCCC" android:centerY="0.75" android:endColor="#00CCCC" android:angle="270" /> </shape> </item> <item android:id="@android:id/secondaryProgress"> <clip> <shape> <corners android:radius="5dip" /> <gradient android:startColor="#00CCCC" android:centerColor="#00CCCC" android:centerY="0.75" android:endColor="#00CCCC" android:angle="270" /> </shape> </clip> </item> <item android:id="@android:id/progress"> <clip> <shape> <corners android:radius="5dip" /> <gradient android:startColor="#00CCCC" android:centerColor="#00CCCC" android:centerY="0.75" android:endColor="#00CCCC" android:angle="270" /> </shape> </clip> </item> 

    Speichern Sie diese in Ihren / drawable Ordner und verwenden Sie sie in der setProgressDrawable (drawable) Funktion

    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.