2015-11-18 52 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)));