web-dev-qa-db-fra.com

Vue texte avec des textes de couleurs différentes en code xml

J'ai besoin de ma textview pour avoir des textes de couleurs différentes. De plus, je dois le faire à partir du code xml, pas du code Java. Y a-t-il quelqu'un qui connaît un moyen de le faire? Merci

par exemple. J'ai la phrase "c'est rouge". J'ai besoin que les mots soient verts et que Word red soit rouge.

11
Hayk Nahapetyan

Reportez votre texte sur string.xml et utilisez une balise de police html. Ainsi, vous pouvez également modifier la couleur de chaque lettre.

ajoutez simplement ceci en Java pour cette chaîne:

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

  tv.setText(Html.fromHtml(getString(R.string.any_text)));

et

Dans string.xml:

 <string name="any_text">
 <![CDATA[ <b><font color=#ff0000>write</b> your <b><font color=#0000ff>text</b> here .

]]> 
  </string>

j'espère vous aider

14
androidqq6

Il y a trois façons de changer la couleur d'un texte dans une vue de texte.

  1. dans strings.xml fichier dans (res> valeurs), en utilisant la balise (<![CDATA[<p>This is green <font color='hexvalue of red'>and this is red</font>.</p> ]]>) puis en déclarant la vue texte dans le code Java sous la forme myTextView.setText(Html.fromHtml(getString(R.string.myText));

  2. via du code Java, à l'aide de la balise HTML String text = "<font color='hexvalue of green'>This is green</font> <font color='hexvalue of red'>and this is red</font>."; myTextView.setText(Html.fromHtml((text));

  3. à travers le texte Spannable en utilisant le code Java. 

    Spannable span = new SpannableString("My String"); 

    span.setSpan(new ForegroundColorSpan(Color.RED), start_position,end_position,Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);

    myTextView.setText(span);

S'il y a d'autres façons de le faire, alors je ne suis pas au courant. J'espère que cela vous aidera

12
Riz Khan

En classe Java, définissez TextView comme ceci:

TextView tv = (TextView) findViewById(R.id.text1);
String text = "<font color=#cc0029>write any thing here</font> "+
              "<font color=#ffcc00>write any thing here 2</font>";
tv.setText(Html.fromHtml(text));
0
user3579830