Comme le titre l'indique, je veux savoir s'il est possible d'obtenir deux caractères de couleur différente dans un seul élément textview.
Réponses
Trop de publicités?Vous pouvez imprimer des lignes à plusieurs couleurs sans HTML comme:
TextView TV = (TextView)findViewById(R.id.mytextview01);
Spannable word = new SpannableString("Your message");
word.setSpan(new ForegroundColorSpan(Color.BLUE), 0, word.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
TV.setText(word);
Spannable wordTwo = new SpannableString("Your new message");
wordTwo.setSpan(new ForegroundColorSpan(Color.RED), 0, wordTwo.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
TV.append(wordTwo);
Vous pouvez utiliser Spannable
pour appliquer des effets à votre TextView
:
Voici mon exemple pour colorier uniquement la première partie d'un texte TextView
(tout en vous permettant de définir la couleur de manière dynamique plutôt que de la coder en dur dans une chaîne comme dans l'exemple HTML!)
mTextView.setText("Red text is here", BufferType.SPANNABLE);
Spannable span = (Spannable) mTextView.getText();
span.setSpan(new ForegroundColorSpan(0xFFFF0000), 0, "Red".length(),
Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
Dans cet exemple, vous pouvez remplacer 0xFFFF0000 par un getResources().getColor(R.color.red)
J'ai écrit du code pour une autre question qui est similaire à celle-ci, mais cette question a été dupliquée, je ne peux donc pas y répondre, alors je mets simplement mon code ici si quelqu'un recherche les mêmes exigences.
Ce n'est pas un code totalement fonctionnel, vous devez effectuer quelques modifications mineures pour le faire fonctionner.
Voici le code:
J'ai utilisé l'idée de @Graeme d'utiliser du texte pouvant être soumis à une épargne.
String colorfulText = "colorfulText";
Spannable span = new SpannableString(colorfulText);
for ( int i = 0, len = colorfulText.length(); i < len; i++ ){
span.setSpan(new ForegroundColorSpan(getRandomColor()), i, i+1,Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
}
((TextView)findViewById(R.id.txtSplashscreenCopywrite)).setText(span);
Méthode de couleur aléatoire:
private int getRandomColor(){
Random rnd = new Random();
return Color.argb(255, rnd.nextInt(256), rnd.nextInt(256), rnd.nextInt(256));
}