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?
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);
}
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);
Ce que vous voulez essentiellement, c'est SpannableString
Voir this pour l'exemple complet: