web-dev-qa-db-de.com

Textansicht mit verschiedenen farbigen Texten im XML-Code

Ich brauche meine textview, um verschiedenfarbige Texte zu haben. Auch ich muss dies aus xml Code, nicht aus Java Code, machen. Gibt es jemanden, der einen Weg kennt, dies zu tun? Vielen Dank

z.B. Ich habe den Satz "Das ist rot". Ich brauche Worte, um grün zu sein, und Word red , um rot zu sein.

11
Hayk Nahapetyan

Verweisen Sie Ihren Text auf string.xml und verwenden Sie den HTML-Font-Tag. Auf diese Weise können Sie auch die Buchstabenfarbe ändern.

fügen Sie dies einfach in Java für diese Zeichenfolge ein:

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

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

und

In string.xml:

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

]]> 
  </string>

hoffe dir helfen

14
androidqq6

Es gibt drei Möglichkeiten, die Farbe eines Textes in einer Textansicht zu ändern.

  1. durch strings.xml-Datei in (res> values), verwenden Sie das Tag (<![CDATA[<p>This is green <font color='hexvalue of red'>and this is red</font>.</p> ]]>) und deklarieren Sie dann die Textansicht im Java-Code als myTextView.setText(Html.fromHtml(getString(R.string.myText));.

  2. durch Java-Code mit dem HTML-Tag 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. durch Spannable Text mit Java-Code. 

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

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

    myTextView.setText(span);

Wenn es andere Möglichkeiten gibt, dann bin ich mir ihrer nicht bewusst. Hoffe, das hilft

12
Riz Khan

In Java-Klasse definieren Sie TextView folgendermaßen:

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