Android:尝试从字符串中更改颜色

时间:2016-05-29 16:18:02

标签: java android

我试图更改这些字符RecursionError之间的字符串颜色,但我的代码出了问题。申请结束了。 每一个" nota"包含* *(即"*")的内容应更改其余字词的颜色" good"并删除This is * good *个字符

"*"

更新:

我尝试了这段代码,但它部分地将单词着色(不是我想要的特定单词):

if(nota != null){
        if(nota.contains("* *")){

         nota = nota.replace("* *","");

         Spannable spannable = new SpannableString(nota);
         spannable.setSpan(new ForegroundColorSpan(Color.YELLOW), nota.indexOf("* *"), nota.indexOf("* *") + "* *".length(),     Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
         txtnota.setText(spannable);

    }
    }

1 个答案:

答案 0 :(得分:0)

正如我所看到的,你首先删除“*”字符,然后你调用indexOf那个字符,但你不再拥有它,所以你得到负面结果。设置范围后移动替换指令。并且您不应该检查“* *”但是首先出现“*”,而不是设置跨度,然后删除“*”的两个出现。或者你可以保留索引。以下是代码示例:

    if(nota != null){
            int firstIndex = nota.indexOf("*");
            if (firstIndex >= 0) {
                nota = nota.replaceFirst("[*]{1}", "");
                int secIndex = nota.indexOf("*");
                if (secIndex >= 0) {
                    nota = nota.replaceFirst("[*]{1}", "");

                    Spannable spannable = new SpannableString(nota);
                    spannable.setSpan(new ForegroundColorSpan(Color.YELLOW), firstIndex, secIndex, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
                    txtnota.setText(spannable);
                }
            }
    }