194 votes

Texte unique avec deux couleurs de texte différentes

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.

355voto

2red13 Points 4424

oui, si vous formatez la chaîne avec HTML

 String text = "<font color=#cc0029>Erste Farbe</font> <font color=#ffcc00>zweite Farbe</font>";
yourtextview.setText(Html.fromHtml(text));
 

181voto

Swapnil Points 1030

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);
 

37voto

Graeme Points 9167

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)

5voto

NaserShaikh Points 1136

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));
    }
 

2voto

user3579830 Points 1

Essaye ça:

 mBox = new TextView(context);
mBox.setText(Html.fromHtml("<b>" + title + "</b>" +  "<br />" + 
      "<small>" + description + "</small>" + "<br />" + 
      "<small>" + DateAdded + "</small>"));
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X