如何在textView中更改单个字母的颜色?

时间:2014-10-01 15:20:53

标签: android textview

我在android中显示文字,如下所示:

TextView textview p new TextView(this);
textview.setMovementMethod(new ScrollingMethod());
textview.setText("Today: 2\nTomorrow: 8\nNext two weeks: 45");
textview.setTextSize(16);
textview.setTypeFace(null, TypeFace.BOLD);
setContentView(textview);

我想从文本绿色中取出2,8和45,而其余部分保持黑色。我知道如何为所有文本而不是单个字符执行此操作。有人可以帮忙吗?我查看了其他类似的问题,但似乎没有像我在这里那样设置textview。

2 个答案:

答案 0 :(得分:9)

使用SpannableString并在文本中添加ForegroundColorSpan。你必须找到你想要跨越的字符/子串的索引,这样你就可以调用addSpan

SpannableString spannedText = new SpannableString(originalText);
int start = ..., end = ...;
spannedText.addSpan(new ForegroundColorSpan(Color.GREEN), start, end, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);

答案 1 :(得分:2)

你可以试试这个:

TextView textview p new TextView(this);
textview.setMovementMethod(new ScrollingMethod());
    textview.setText(Html.fromHtml("Today: <font color=green>2</font>\nTomorrow: <font color=green>8</font>\nNext two weeks: <font color=green>45</font>");
textview.setTextSize(16);
textview.setTypeFace(null, TypeFace.BOLD);
setContentView(textview);

这会将绿色设置为2,8,45。 simillarly你可以使用任何html标签的textview文本。 希望这会对你有所帮助。