2 votes

Comment changer le dessin de progression de SeekBar dynamiquement à partir du programme ?

Je voudrais changer la couleur de la progression (pas la SeekBar arrière-plan) d'un SeekBar dynamiquement à partir du programme.

Utilisation de seekbar.setProgressDrawable(Drawable drawable) ne modifie que l'arrière-plan de la SeekBar . Tous les exemples que j'ai vus font appel à des éléments graphiques issus de XML qui sont statiques au moment de l'exécution.

La couleur change en fonction de l'activité de l'utilisateur et j'ai besoin de la définir dans le tableau de progression de la barre de recherche. Je programme donc mon propre drawable dans mon code.

En XML, nous pouvons spécifier les ID des éléments (tels que le fond, la progression, etc.) pour obtenir un drawable ? Comment réaliser cela en programme ?

1voto

Talha Points 6003

Vous pouvez créer votre xml personnalisé, puis programmer le setbackgrounddrawable de votre barre de progression,

myProgressBar.setProgressDrawable(R.drawable.progress_horizontal) ;

* progress_horizontal.xml* (en anglais)

<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="#ffffd300"
                        android:centerColor="#ffffb600"
                        android:centerY="0.75"
                        android:endColor="#ffffcb00"
                        android:angle="270"
                />
            </shape>
        </clip>
    </item>

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X