J'ai mis Horizontal ProgressBar
.
Je voudrais changer la couleur de progression en jaune.
<ProgressBar
android:id="@+id/progressbar"
android:layout_width="80dip"
android:layout_height="20dip"
android:focusable="false"
style="?android:attr/progressBarStyleHorizontal" />
Le problème est que la couleur de progression est différente selon les appareils. Donc, je veux qu'il corrige la couleur de progression.
android
android-progressbar
Nishant Shah
la source
la source
Réponses:
J'ai copié ceci à partir de l'une de mes applications, il y a donc quelques attributs supplémentaires, mais cela devrait vous donner une idée. Ceci provient de la mise en page qui a la barre de progression:
Ensuite, créez un nouveau dessinable avec quelque chose de similaire à ce qui suit (dans ce cas
greenprogress.xml
):Vous pouvez changer les couleurs selon vos besoins, cela vous donnera une barre de progression verte.
la source
android:id="@android:id/progress"
,android:id="@android:id/background"
etandroid:id="@android:id/secondaryProgress"
défendre.Une solution plus simple:
progess_drawable_blue
la source
Créez simplement un style
values/styles.xml
.Ensuite, définissez ce style comme
ProgressBar
thème.et peu importe, votre barre de progression est horizontale ou circulaire. C'est tout.
la source
Si vous souhaitez uniquement modifier la couleur de la barre de progression, vous pouvez simplement utiliser un filtre de couleur dans la méthode onCreate () de votre activité:
Idée d' ici .
Vous n'avez besoin de le faire que pour les versions pré-sucette. Sur Lollipop, vous pouvez utiliser l'attribut de style colorAccent.
la source
SeekBar
c'est le même, il suffit d' ajouter de l' API 16:seekBar.getThumb().setColorFilter(color, PorterDuff.Mode.SRC_IN);
. Cela changera la couleur de ce pouce rond.setColorFilter()
Faire appel à un dessin directement appliquera la couleur partout. Puisque c'est ce dont je n'avais pas besoin, je viens d'appelermutate()
leDrawable
(c'est-à-dire commeseekBar.getThumb().mutate().setColorFilter(color, PorterDuff.Mode.SRC_IN);
pour le niveau d'API 21 ou supérieur, utilisez simplement
la source
Il y a 3 façons de résoudre cette question:
En particulier, il y a beaucoup de confusion autour des # 2 et # 3, comme on le voit dans les commentaires à la réponse de l'amfcosta. Cette réponse donnera des résultats de couleur imprévisibles chaque fois que vous souhaitez définir la barre de progression sur autre chose que les couleurs primaires, car elle ne modifie que la couleur d'arrière-plan, et la zone de «clip» de la barre de progression réelle sera toujours une superposition jaune avec une opacité réduite. Par exemple, l'utilisation de cette méthode pour définir l'arrière-plan en violet foncé entraînera une couleur de "clip" de la barre de progression d'une couleur rose folle résultant d'un mélange de violet foncé et de jaune via un alpha réduit.
Donc de toute façon, Ryan répond parfaitement au n ° 1 et Štarke répond à la plupart des n ° 3, mais pour ceux qui recherchent une solution complète aux n ° 2 et 3:
Comment ajuster la couleur de la barre de progression par programme, mais choisir la couleur à partir d'une couleur prédéterminée déclarée en XML
res / drawable / my_progressbar.xml :
Créez ce fichier mais changez les couleurs dans my_progress et my_secondsProgress:
(REMARQUE: il ne s'agit que d'une copie du fichier XML réel définissant la barre de progression du SDK Android par défaut, mais j'ai changé les identifiants et les couleurs. L'original est nommé progress_horizontal)
Dans votre Java :
Comment ajuster la couleur de la barre de progression par programme et créer également la couleur par programme
EDIT: j'ai trouvé le temps de résoudre ce problème correctement. Ma réponse précédente laissait cela un peu ambigu.
Un ProgressBar est composé de 3 Drawables dans un LayerDrawable.
Dans l'exemple ci-dessous, je changerai la couleur de la barre de progression principale en cyan.
Cet exemple lui attribue une couleur unie. Vous pouvez le définir sur une couleur dégradée en remplaçant
avec
À votre santé.
-Lance
la source
ViewUtils
avec une référence àContext
, de sorte que je n'ai pas besoin de passer unContext
lors de l'appelconvertDpToPixel()
Si vous êtes au niveau d'API 21 ou supérieur, vous pouvez utiliser ces attributs XML:
la source
La solution la plus simple que j'ai découverte est quelque chose comme ceci:
Mettez ce qui précède dans le
styles.xml
fichier sous leres > values
dossier.REMARQUE: Si vous utilisez une autre couleur d'accentuation, les solutions précédentes devraient être adaptées.
API 21 ou SUPÉRIEUR
la source
la source
Pour tous ceux qui recherchent comment le faire par programme:
La définition des identifiants sur les drawables est cruciale et prend soin de préserver les limites et l'état réel de la barre de progression
la source
Vous me donnez vraiment mal à la tête. Ce que vous pouvez faire est de rendre d'abord votre liste de calques dessinable via xml (ce qui signifie un arrière-plan comme premier calque, un dessinable qui représente la progression secondaire en tant que deuxième calque, et un autre dessinable qui représente la progression principale en tant que dernier calque), puis changez la couleur sur le code en procédant comme suit:
Cette méthode vous donnera la meilleure flexibilité d'avoir la mesure de votre dessinable original déclaré sur le xml, SANS MODIFICATION DE SA STRUCTURE APRÈS, surtout si vous avez besoin d'avoir le dossier d'écran du fichier xml spécifique, puis en modifiant UNIQUEMENT LA COULEUR via le code. Pas de ré-instanciation d'un nouveau ShapeDrawable à partir de zéro.
la source
La couleur ProgressBar peut être modifiée comme suit:
/res/values/colors.xml
/res/values/styles.xml
onCreate:
la source
Créez une ressource dessinable de quel arrière-plan vous avez besoin, dans mon cas, je l'ai nommé bg_custom_progressbar.xml
Ensuite, utilisez cet arrière-plan personnalisé comme
Ça marche bien pour moi
la source
En xml:
VoirModèle:
la source
Avec la bibliothèque de composants de matériaux, vous pouvez utiliser
ProgressIndicator
avec l'app:indicatorColor
attribut pour changer la couleur:Remarque : il nécessite au moins la version
1.3.0-alpha01
.Avec le,
ProgressBar
vous pouvez remplacer la couleur en utilisant:avec:
la source
Si vous souhaitez définir la couleur de progression principale et secondaire sur la barre de progression horizontale par programme dans Android, utilisez l'extrait ci-dessous
la source