如何在Android中格式化TextView文本?

时间:2013-09-02 00:06:04

标签: java android textview

我正在创建一个Twitter应用程序,我一直在努力寻找一种有效的方式来格式化推文。

示例推文:“RT @BlahBlah这是推文http://link.com #Hello”

我想格式化此字符串的某些部分。例如,超链接为蓝色,主题标签为灰色,@ xxx为绿色

我该怎么做?

3 个答案:

答案 0 :(得分:2)

答案 1 :(得分:0)

实际上,您可以使用HTML标记格式化TextView中的文本。我看看优秀的这个帖子,我猜它应该回答你的问题:Is it possible to have multiple styles inside a TextView?

答案 2 :(得分:0)

这有效,但我不认为它是有效的,因为它必须遍历整个字符串。我需要为很多推文做这件事...... 有更好,更有效的方式吗?

    int atStart = 0;
    int atEnd = 0;
    boolean atFound = false;

    String regex = "\\W";

    System.out.println(str.length());

    for(int i = 0;i < str.length();i++)
    {
        String a = Character.toString(str.charAt(i));

        if(a.matches(regex)| i==str.length()-1 && atFound)
        {
            System.out.println(i + "REGEX MATCH");

            if(i== str.length()-1)
            {
                atEnd = i+1;
            }else
            atEnd = i;

            i--; // <- decrement. otherwise "@hello@hello" won't change

            atFound = false;

            str.setSpan(new BackgroundColorSpan(0xFFFF0000), atStart,
                    atEnd, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
        }else

        if(a.equals("@"))
        {
            atStart = i;
            atFound = true;
        }
    }