J'utilise une barre de progression horizontale dans mon application Android et je souhaite modifier sa couleur de progression (qui est jaune par défaut). Comment puis-je le faire en utilisant code
(pas XML)?
android
android-progressbar
WhiteTigerK
la source
la source
android:indeterminateTint="@android:color/white"
fonctionne uniquement sur API> = 21Réponses:
Je suis désolé que ce ne soit pas la réponse, mais qu'est-ce qui explique l'exigence de le définir à partir du code? Et
.setProgressDrawable
devrait fonctionner s'il est défini correctementla source
Pour une barre de progression horizontale, vous pouvez également utiliser un
ColorFilter
comme ceci:Remarque: cela modifie l'apparence de toutes les barres de progression dans votre application. Pour modifier uniquement une barre de progression spécifique, procédez comme suit:
Si progressBar est indéterminé, utilisez-le à la
getIndeterminateDrawable()
place degetProgressDrawable()
.Depuis Lollipop (API 21), vous pouvez définir une teinte de progression:
la source
getIndeterminateDrawable
si vous utilisez des progrès indéterminés.Ce n'est pas programmatique mais je pense que cela pourrait aider beaucoup de gens de toute façon.
J'ai beaucoup essayé et le moyen le plus efficace était d'ajouter ces lignes à ma barre de progression dans le fichier .xml:
Donc, à la fin, ce code l'a fait pour moi:
Cette solution fonctionne pour API 21+
la source
Pour ma barre de progression indéterminée (spinner), je viens de définir un filtre de couleur sur le dessinable. Fonctionne très bien et une seule ligne.
Exemple où définir la couleur sur le rouge:
la source
android.graphics.PorterDuff.Mode.MULTIPLY
pourPorterDuff.Mode.SRC_IN
et vous obtiendrez la couleur hexadécimale exacte.C'est une vieille question, mais l'utilisation du thème n'est pas mentionnée ici. Si votre thème par défaut utilise
AppCompat
, votreProgressBar
couleur sera celle quecolorAccent
vous aurez définie.Changer
colorAccent
changera égalementProgressBar
la couleur de votre, mais les changements se reflètent également à plusieurs endroits. Donc, si vous voulez une couleur différente juste pour un spécifique,PregressBar
vous pouvez le faire en appliquant un thème à celaProgressBar
:Étendez votre thème par défaut et remplacez
colorAccent
Et en
ProgressBar
ajoutant l'android:theme
attribut:Cela ressemblera donc à ceci:
Donc, vous changez simplement un
colorAccent
pour votre particulierProgressBar
.Remarque : L'utilisation
style
ne fonctionnera pas. Vous devez utiliserandroid:theme
uniquement. Vous pouvez trouver plus d'utilisation du thème ici: https://plus.google.com/u/0/+AndroidDevelopers/posts/JXHKyhsWHAHla source
Toutes les API
si vous utilisez toutes les API, créez simplement le thème avec style
style.xml
et utilisation en cours
API niveau 21 et supérieur
s'il est utilisé dans l'API niveau 21 et supérieur, utilisez simplement ce code:
la source
selon certaines suggestions, vous POUVEZ spécifier une forme et un clip détachable avec une couleur, puis définissez-le. J'ai ce travail par programme. Voilà comment je le fais ..
Assurez-vous d'abord d'importer la bibliothèque dessinable.
import android.graphics.drawable.*;
Utilisez ensuite le code similaire à ci-dessous;
la source
progress.setLevel(2500)
ne fonctionne pas pour moi et apparemment, votre modification n'a pas été acceptée pour une raison quelconque. Merci. +1.Cela a fonctionné pour moi:
la source
si indéterminé:
la source
Cela fonctionne pour moi. Cela fonctionne également pour la version inférieure. Ajoutez ceci à votre syles.xml
Et utilisez-le comme ça en xml
la source
parent="ThemeOverlay.AppCompat.Light"
De nos jours en 2016, j'ai trouvé que certains appareils pré-Lollipop n'honorent pas le
colorAccent
paramètre, donc ma solution finale pour toutes les API est maintenant la suivante:Pour les points bonus, il n'utilise aucun code obsolète. Essayez!
la source
wrapDrawable.mutate()
avecDrawableCompat.setTint(wrapDrawable.mutate(), ContextCompat.getColor(getContext(), android.R.color.holo_green_light));
.xml
paramètres et si quelque chose d'autre remplace laProgressBar
couleur.C'est ce que j'ai fait. Travaillé.
Barre de progression:
progressdrawable.xml:
utilisez ici le dégradé pour changer la couleur comme vous le souhaitez. Et Android: toDegrees = "X" augmente la valeur de X et la barre de progression tourne rapidement. Diminuez et il tourne lentement.Personnalisez selon vos besoins.
échantillon:
la source
Frappez le même problème tout en travaillant sur la modification de l'apparence de la barre de progression par défaut. Voici quelques informations supplémentaires qui, espérons-le, aideront les gens :)
a-z0-9_.
(c'est-à-dire pas de majuscules!)R.drawable.filename
myProgressBar.setProgressDrawable(...)
, mais vous ne pouvez pas simplement vous référer à votre disposition personnaliséeR.drawable.filename
, vous devez la récupérer en tant queDrawable
:la source
Il y a probablement une chose qui n'a pas été mentionnée dans cette réponse:
Si votre thème hérite de
Theme.AppCompat
,ProgressBar
prendra la couleur que vous avez définie comme"colorAccent"
dans votre thème.Donc, en utilisant ..
..will teintera automatiquement la couleur de la ProgressBar
@color/custom_color
.la source
la source
Vous pouvez essayer de changer vos styles, thèmes ou en utilisant Android: indeterminateTint = "@ color / yourColor" où vous voulez, mais il n'y a qu'une seule façon de le faire qui fonctionnera sur n'importe quelle version d'Android SKD:
Si votre barre de progression n'est pas indéterminée, veuillez utiliser:
Si votre barre de progression est indéterminée, veuillez utiliser:
C'est triste qu'Android soit un tel gâchis!
la source
ProgressBar
, mais pour déterminé, il peint toute l'échelle avec de la couleur.Comment je l'ai fait dans ProgressBar horizontal:
la source
Solution la plus simple si vous souhaitez modifier la couleur dans le fichier xml de mise en page, utilisez le code ci-dessous et utilisez la propriété indeterminateTint pour la couleur souhaitée.
la source
Cette solution a fonctionné pour moi:
la source
Encore une petite chose, la solution de thème fonctionne si vous héritez d'un thème de base, donc pour une application compacte, votre thème devrait être:
Et puis définissez cela dans le thème de la barre de progression
la source
Pour changer la couleur horizontale de ProgressBar (en kotlin):
Pour modifier la couleur de la barre de progression indéterminée:
Et il teinte enfin normalement la progression pré-sucette
la source
Style de matériau personnalisé de la barre de progression horizontale:
Pour changer la couleur de l'arrière-plan et la progression de la barre de progression horizontale.
Appliquez-le à la barre de progression en définissant l'attribut de style, pour les styles de matériaux personnalisés et la barre de progression personnalisée, consultez http://www.zoftino.com/android-progressbar-and-custom-progressbar-examples
la source
Posté pour ajouter des informations sur la réponse de PaulieG , car ateiob m'a demandé d'expliquer quelque chose ...
Je peux dire qu'il y a (ou du moins, au moment de la rédaction de ce document lorsque j'ai regardé la version actuelle du code source Android) un bogue / problème / optimisation dans le
ProgressBar
code qui ignore une tentative de définir la progression sur une valeur qu'il est déjà à.Après avoir appelé
ProgressBar.setProgressDrawable()
, votre barre de progression sera vide (car vous avez modifié la partie pouvant être dessinée).Cela signifie que vous devez définir la progression et la redessiner. Mais si vous définissez simplement la progression sur une valeur préservée, cela ne fera rien.
Vous devez d'abord le mettre à 0, puis à nouveau à la «vieille» valeur, et la barre sera redessinée.
Donc, pour résumer:
Voici une méthode que j'ai qui fait cela:
En ce qui concerne la solution HappyEngineer, je pense que c'était une solution de contournement similaire, pour définir manuellement le décalage de "progression". Dans les deux cas, le code ci-dessus devrait fonctionner pour vous.
la source
Utilisez android.support.v4.graphics.drawable.DrawableCompat :
la source
utilisez simplement:
la source
Pour une ProgressBar de style horizontal j'utilise:
Un exemple d'appel serait:
Si vous n'avez pas besoin de la «progression secondaire», définissez simplement value2 sur value1.
la source
Appliquez ce style personnalisé à la barre de progression.
@ drawable / progress.xml -
Utilisez ce type d'image pour la barre de progression.
Pour un meilleur résultat, vous pouvez utiliser plusieurs images de progression. Et n'hésitez pas à utiliser des images, car la plate-forme Android elle-même utilise des images pour la barre de progression. Le code est extrait de sdk :)
la source
Selon muhammad-adil suggéré pour SDK ver 21 et supérieur
dans XML Works pour moi, c'est assez facile.
la source
Voici le code pour changer la couleur de ProgressBar par programmation.
la source
la source