Je cherche un moyen de changer la couleur d'un texte d'un seul mot dans un à TextView
partir d'un Activity
.
Par exemple, avec ceci:
String first = "This word is ";
String next = "red"
TextView t = (TextView) findViewById(R.id.textbox);
t.setText(first + next);
Comment changer la couleur du next
texte en rouge?
Réponses:
Le moyen le plus simple que je connaisse est d'utiliser simplement du html.
Mais cela vous obligera à reconstruire le TextView lorsque (si?) Vous souhaitez changer la couleur, ce qui pourrait causer des problèmes.
la source
fromHtml
est obsolète maintenantHtml.fromHtml
est obsolète. Cette solution a fonctionné pour moi!vous devez utiliser spannable cela vous permettra également d'augmenter la taille du texte, de le mettre en gras, etc. même de mettre une image.
la source
SpannableString
objet à l'aide de laTextFormatted
propriété de votre contrôle.java.lang.String cannot be cast to android.text.Spannable
erreur.Utilisez SpannableStringBuilder comme ceci:
la source
new ForegroundColorSpan(Color)
pour que le texte conserve sa couleur par défaut d'origine?pour une longue chaîne, vous pouvez utiliser ceci:
la source
Si vous souhaitez modifier l'état de toutes les instances d'
String
unTextView
texte spécifique à l' intérieur d'un texte (insensible à la casse), vous pouvez utiliserStringBuilder
s etSpannableString
comme ceci:}
TextView
texte dans un fichierStringBuilder
.StringBuilder
.TextView
texte complet dans unSpannableString
String
instances à l'intérieur duTextView
texte et les modifier une fois atteintes.TextView
surSpannableString
.la source
J'ai implémenté une fonction utilitaire dans Kotlin pour mon propre cas d'utilisation et peut-être utile pour quelqu'un d'autre.
Comment je l'utilise:
la source
UTILISATION:
Fonction:
la source
Je pense que c'est plus lisible pour colorier un mot dans une chaîne, c'est aussi probablement un peu plus efficace car vous écrivez une fois
la source