web-dev-qa-db-fra.com

Android multi couleur dans un TextView

Duplicata possible:
Est-il possible d'avoir plusieurs styles dans une TextView?

Je veux que mon TextView affiche une partie de son texte en rouge et d'autres en noir. Son contenu (le texte) est créé dynamiquement et je ne sais pas combien de mots seront de couleur rouge.

Existe-t-il un moyen de faire cela comme en html-css?

47
Hüseyin Zeki

Vous pouvez utiliser Spannable pour obtenir ce que vous voulez.

String text = "This is <font color='red'>red</font>. This is <font color='blue'>blue</font>.";

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
   textView.setText(Html.fromHtml(text,  Html.FROM_HTML_MODE_LEGACY), TextView.BufferType.SPANNABLE);
} else {
   textView.setText(Html.fromHtml(text), TextView.BufferType.SPANNABLE);
}
92
Costi Muraru

essayez de cette façon

    TextView tv = (TextView)findViewById(R.id.tv);

    Spannable wordtoSpan = new SpannableString("I know just how to whisper, And I know just how to cry,I know just where to find the answers");        
    wordtoSpan.setSpan(new ForegroundColorSpan(Color.BLUE), 15, 30, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
    wordtoSpan.setSpan(new ForegroundColorSpan(Color.RED), 5, 10, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
    tv.setText(wordtoSpan);
80
Khan

Ce que vous voulez essentiellement, c'est SpannableString

Voir this pour l'exemple complet:

6
Arif Nadeem