如何在android中更改句子中间的文本颜色

时间:2013-12-13 06:19:07

标签: android string colors

我需要更改句子中随机出现的字符串的颜色。

Ex:以下句子是我需要显示的内容。

  1. hai #xyz 你好吗。

  2. 我正在学习 #abc android。

    在此,我必须更改单词“ #xyz ”,“ #abc ”的颜色,即以字符“#< /强>”。

    我使用了一些字符串函数split(),subString()。但我得不到我需要的东西。

  3. 所以,请指导我如何解决这个问题。

3 个答案:

答案 0 :(得分:4)

您可以使用此代码:

t.setText(first + next, BufferType.SPANNABLE);
Spannable s = (Spannable)t.getText();
int start = first.length();
int end = start + next.length();
s.setSpan(new ForegroundColorSpan(0xFFFF0000), start, end, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);

或者您可以使用html:

String first = "This word is ";
String next = "<font color='#EE0000'>red</font>";
t.setText(Html.fromHtml(first + next));

答案 1 :(得分:4)

将SpannableString用于ex:

SpannableString ss = new SpannableString("hai #xyz how are you.");
ss.setSpan(new ForegroundColorSpan(Color.RED), 4, 9, 0);

尝试使用#:

更改每个单词的颜色
String s="hai #xyz how are you.";
ForegroundColorSpan span = new ForegroundColorSpan(Color.RED);
SpannableString ss = new SpannableString(s);
String[] ss = s.split(" ");
int currIndex = 0;
for (String word : ss) {
    if (word.startsWith("#")) {
        ss.setSpan(span, currIndex,currIndex+ word.length(), 0);
    }
    currIndex += (word.length() + 1);
}

答案 2 :(得分:4)

您可以使用html标签轻松实现此目的

tv_message.setText(Html.fromHtml("<font color=\"#000000\">"+"Hi "+"</font>"+" "+"<font color=\"#EE0000\">"+"XYZ "+"</font>"+" "+"<font color=\"#000000\">"+"How are You ?  " + "</font>"));