2015-11-18 77 views
8

我的應用程序上有簡單的textView控制器。
在這個textView我設置文本「123456789」 - 文本顏色是黑色的。如何更改TextView部分的文本顏色?

我希望最後三位數字(789)將顯示爲紅色文字顏色。

有沒有什麼簡單的方法來做到這一點不使用兩個TextView的控制
(一個包含「123456」的黑色和第二將包含「789」,在紅)

回答

11

試試這個:

設置TextView作爲HTML使用SpannableTextView

String text = "<font color='black'>123456</font><font color='red'>789</font>"; 
textView.setText(Html.fromHtml(text), TextView.BufferType.SPANNABLE); 
+0

Html.fromHtml(文本)已被棄用,Html.fromHtml(字符串,整數),可從API級別24 .. –

6

您可以使用SpannableString是優秀的方式在TextView中設置字符串樣式。

Demo

SO Post

4

您可以使用

myTextView.setText(Html.fromHtml(stringB + "<font color=red>" + stringA + "</font>); 
0

您可以使用HTML橫幅在你的java類: 例子:

textElement.setText(Html.fromHtml("123456 <fontcolor='#FF0000'>789</font>")); 

或者在XML文件中使用CData的格式: 例子:

<string name="numbers"><![CDATA[123456<fontcolor="#FF0000">789</font>]]></string> 

我希望幫助你;)

+1

我知道,所以是的比賽張貼答案..但要小心,然後提交答案。 – Amy

+0

對不起,我現在在我的手機上,我無法設法顯示它只是desapear的HTML腳本:/ –

1

您可以使用此方法

public static final Spannable getColoredString(Context context, CharSequence text, int color) { 
     Spannable spannable = new SpannableString(text); 
     spannable.setSpan(new ForegroundColorSpan(color), 0, spannable.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); 
     return spannable; 
    } 

再後來你打電話是利用

textview.append(getColoredString(this, "Hi!", ContextCompact.getColor(this, R.color.red))); 
textview.append(getColoredString(this, "User", ContextCompact.getColor(this, R.color.green)));