Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Is it possible to change the text color in a string to multiple colors in Java?

What I mean is, is it possible to change the text "This text is blue" to the color blue in a single string? There must be a way...

<TextView     android:gravity="left"     android:padding="3dip"     android:text="This text is white. This text is blue."     android:textColor="#ffffff"     android:textSize="22dp"/> 
like image 316
jmendegan Avatar asked Dec 06 '11 19:12

jmendegan


People also ask

How do I make text a different color in Java?

Syntax: System. out. println(ANSI_COLORNAME + "This text is colored" + ANSI_RESET);

How do I make my text different colors?

You can change the color of text in your Word document. Select the text that you want to change. On the Home tab, in the Font group, choose the arrow next to Font Color, and then select a color. You can also use the formatting options on the Mini toolbar to quickly format text.

How do I change the color of a character in a string in Java?

You can do this with simple way. SpannableStringBuilder builder = new SpannableStringBuilder(); String red = "user's word is red"; SpannableString redSpannable= new SpannableString(red); redSpannable. setSpan(new ForegroundColorSpan(Color. RED), 0, red.


2 Answers

Yes, its possible. For this you need to use SpannableString and ForegroundColorSpan.

This should look something like this:

SpannableStringBuilder builder = new SpannableStringBuilder();  String red = "this is red"; SpannableString redSpannable= new SpannableString(red); redSpannable.setSpan(new ForegroundColorSpan(Color.RED), 0, red.length(), 0); builder.append(redSpannable);  String white = "this is white"; SpannableString whiteSpannable= new SpannableString(white); whiteSpannable.setSpan(new ForegroundColorSpan(Color.WHITE), 0, white.length(), 0); builder.append(whiteSpannable);  String blue = "this is blue"; SpannableString blueSpannable = new SpannableString(blue); blueSpannable.setSpan(new ForegroundColorSpan(Color.BLUE), 0, blue.length(), 0); builder.append(blueSpannable);  mTextView.setText(builder, BufferType.SPANNABLE); 

enter image description here

like image 156
inazaruk Avatar answered Sep 29 '22 02:09

inazaruk


A simple way to do it is to use HTML and set the text to the TextView programmatically.

String text = "This text is white. <font color=\"blue\">This text is blue.</font>"; textView.setText(Html.fromHtml(text), BufferType.SPANNABLE); 
like image 24
Jason Robinson Avatar answered Sep 29 '22 01:09

Jason Robinson