text = text + CepVizyon.getPhoneCode() + "\n\n"
+ getText(R.string.currentversion) + CepVizyon.getLicenseText();
activationText.setText(text);
myTextView.setText(text);
Je veux changer la couleur de CepVizyon.getPhoneCode()
la chaîne de. Comment puis-je faire ceci?
android
uitextview
textview
atasoyh
la source
la source
Réponses:
Spannable est plus flexible:
la source
()
aprèstext.length
commelength
une méthode pas un champ. Je le ferais moi-même mais les modifications doivent être d'au moins 6 caractères :)Html.fromHtml(R.id.your_html_string);
la source
Si vous avez du texte statique qui a besoin de couleur, vous pouvez l'ajouter sans aucun code via le fichier de chaînes:
puis
résultat
Je ne sais pas sur quelles versions d'API cela fonctionne, mais ne fonctionne pas pour l'API 19 que j'ai testée jusqu'à présent, donc probablement seulement certaines des versions d'API les plus récentes prennent en charge cela
edit: comme @hairraisin mentionné dans les commentaires, essayez d'utiliser
fgcolor
au lieu decolor
pour la couleur de police, alors cela devrait fonctionner pour les niveaux d'API inférieurs, mais nécessite plus de tests pour être sûrla source
<font fgcolor=...
API 15 et l'API 25 (je n'ai cependant pas testé spécifiquement 19)En ce qui concerne la réponse de Maneesh, cela fonctionnera, mais vous devez ajouter et échapper les guillemets pour l'attribut de couleur.
la source
C'est bon pour moi!
la source
Voici une
colorize
fonction basée sur la réponse d'andyboot:la source
Voici la solution dans Kotlin qui utilise
SpannableString
pour changer la couleur d'une partie d'une chaîne.la source
Je n'aimais pas l'idée de faire cela par code chaque fois que je veux colorer des parties du texte que j'ai beaucoup faites dans toutes mes applications (et puisque dans certains cas, le texte est défini en runtime avec différents en ligne- couleurs définies) alors j'ai créé les miennes
MarkableTextView
.L'idée était de:
Voici le processus étape par étape:
J'avais d'abord besoin d'un moyen de trouver des balises XML dans une chaîne donnée et j'ai
Regex
fait l'affaire.Pour que ce qui précède corresponde à une balise XML, il doit avoir les critères suivants:
<a>
<a >
<a-a>
<a ..attrs..>
mais pas< a>
<1>
<a></a>
mais pas<a></b>
Maintenant, pour les attributs, nous allons utiliser celui-ci.
Il a le même concept et généralement je n'ai pas eu besoin d'aller loin pour les deux puisque le compilateur se chargera du reste si quelque chose ne va pas.
Nous avons maintenant besoin d'une classe qui peut contenir les données extraites:
Avant toute chose, nous allons ajouter cet itérateur sympa que j'utilise depuis longtemps pour parcourir les matchs ( je ne me souviens plus de l'auteur) :
MarkableTextView:
Enfin, le style, voici donc un styler très simple que j'ai créé pour cette réponse:
Et voici à quoi
Markable
ressemble la classe contenant les définitions:Tout ce dont nous avons besoin maintenant est de référencer une chaîne et, en gros, cela devrait ressembler à ceci:
Assurez-vous d'envelopper les balises avec un
CDATA Section
et d'échapper"
avec\
.J'ai fait cela comme une solution modulaire pour traiter des parties du texte de toutes les manières différentes sans avoir besoin de bourrer du code inutile.
la source
J'ai fait comme Andy Boot l'a dit, mais j'avais aussi une durée cliquable, et cela n'a pas fonctionné parce que l'ordre
setSpans
était appelé. Vous devez donc d'abord appeler lespannable.setSpan(clickableSpanand...
puis lespannable.setSpan(new ForegroundColorSpan...
pour obtenir la couleur dans le TextViewla source
J'ai fait cette petite fonction, il suffit de passer votre texte à la couleur, les index de début et de fin de ce que vous voulez colorer de ce texte et la couleur elle-même
Kotlin
Usage
la source
Avec une fonction d'extension Kotlin à usage général, cela ressemblerait à ceci:
la source
Utiliser des échappements de caractères + Html.fromHtml ()
Comment stocker la chaîne dans le dossier de ressources de chaîne
Comment afficher dans TextView?
Prime:
La chaîne dans la sortie ressemble à ceci
la source
Inspiré de la réponse d'Alejandro H. Cruz ci-dessus .
Sa fonction ne fonctionne que pour une seule correspondance de sous-chaîne, j'ai mis à jour sa méthode pour utiliser Regex et je devrais mettre à jour les couleurs sur toutes les correspondances:
la source
Une méthode consiste à en séparer
myTextView
quelques-unsTextViews
, dont l'un ne concerne que le code du téléphone. Ensuite, contrôler la couleur de ce spécifiqueTextView
est assez simple.la source