219 votes

Définition de la couleur des TextView durée de Android

Est-il possible de définir la couleur de la juste durée de texte dans un TextView?

Je voudrais faire quelque chose de similaire à l'application Twitter, dans lequel une partie du texte est en bleu. Voir l'image ci-dessous:

alt text

460voto

Daniel Points 3803

Une autre réponse serait très similaire, mais n'aurait pas besoin de définir le texte de l' TextView deux fois

TextView TV = (TextView)findViewById(R.id.mytextview01);

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

TV.setText(wordtoSpan);

84voto

mach Points 1463

Voici un peu d'aide de fonction. Idéal pour quand vous avez plusieurs langues!

   private void setColor(TextView view, String fulltext, String subtext, int color) {
      view.setText(fulltext, TextView.BufferType.SPANNABLE);
      Spannable str = (Spannable) view.getText();
      int i = fulltext.indexOf(subtext);
      str.setSpan(new ForegroundColorSpan(color), i, i+subtext.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
   }

31voto

Tiago Points 1234

Si vous voulez plus de contrôle, vous pouvez consulter l' TextPaint classe. Voici comment l'utiliser:

       final ClickableSpan clickableSpan = new ClickableSpan() {

            @Override
            public void onClick(final View textView) {

                //Your onClick code here
            }

            @Override
            public void updateDrawState(final TextPaint textPaint) {

                textPaint.setColor( yourContext.getResources().getColor(R.color.orange));
                textPaint.setUnderlineText(true);
            }
        };

21voto

Elenasys Points 23268

définissez votre TtextViews texte spannable et de définir un ForegroundColorSpan pour votre texte.

TextView textView = (TextView)findViewById(R.id.mytextview01);    
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);    
textView.setText(wordtoSpan);

15voto

Dave Points 638

Une autre façon qui pourrait être utilisé dans certaines situations, est de définir la couleur des liens dans les propriétés de l'affichage, qui est de prendre le Spannable.

Si votre Spannable est destiné à être utilisé dans un TextView, par exemple, vous pouvez définir la couleur des liens dans le fichier XML comme ceci:

<TextView
    android:id="@+id/myTextView"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:textColorLink="@color/your_color"
</TextView>

Vous pouvez aussi le mettre dans le code avec:

TextView tv = (TextView) findViewById(R.id.myTextView);
tv.setLinkTextColor(your_color);

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