XML中定义的TextView不同颜色的问题

3
我想在一个TextView中定义不同的颜色,如下所示:
<font color="yellow">Hi </font><font color="red">everybody</font>  

我看到了这个链接:Is it possible to have multiple styles inside a TextView?。但它并不适合我。我想知道如何通过XML定义它。这是否可能? 谢谢


抱歉,我们只能使用源代码完成。如果可以使用XML完成,我们会很好奇。您能告诉我们为什么不能使用源代码吗? - san
1个回答

3

我们无法在XML文件中设置,但我们可以通过编程设置...您需要使用Text Spannable。以下是一个示例:

String text = "Hi @@hello@@";

TextView.setText(setSpanBetweenTokens(text, "@@", new ForegroundColorSpan(Color.RED)));

您需要用到的setSpanBetweenTokens方法如下:

public static CharSequence setSpanBetweenTokens(CharSequence text,
            String token, CharacterStyle... cs)
        {
            // Start and end refer to the points where the span will apply
            int tokenLen = token.length();
            int start = text.toString().indexOf(token) + tokenLen;
            int end = text.toString().indexOf(token, start);
        

if (start > -1 && end > -1)
      {               
          SpannableStringBuilder ssb = new SpannableStringBuilder(text);
          for (CharacterStyle c : cs)
              ssb.setSpan(c, start, end, 0);

          // Delete the tokens before and after the span
          ssb.delete(end, end + tokenLen);
          ssb.delete(start - tokenLen, start);

          text = ssb;
      }
      return text;
  }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接