SpannableStringBuilder字体颜色

时间:2015-01-02 17:26:14

标签: android

好的,我很抱歉这个可怕的头衔,我不知道怎么回事。我使用spannablestringbuilder来进行自定义字体着色。

这是第一个代码段

 protected void onStop() {
        try{
            clientskt.close();
        }catch(final Exception ii){


            Server.this.runOnUiThread(new Runnable() {
                @Override
                public void run() {

                    SpannableStringBuilder errorsocketclose = new SpannableStringBuilder("[ERROR] "+ii+" [ERROR]\n");

                    errorsocketclose.setSpan(new ForegroundColorSpan(Color.parseColor("#B00000")), 0,errorsocketclose.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
                    errorsocketclose.setSpan(new ForegroundColorSpan(Color.parseColor("#000000")),8, ii.toString().length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
                    editText.append(errorsocketclose);
                }
            });
        }
        super.onStop();
    }

并且它将是最后一个错误,并且它将是红色之前的九个空格。

正在使用中)[错误]

现在如果我把它放在

int letshopto = ii.toString().length() + 9;

只是[ERROR]会像预期的那样变红。

我在不同的设置中遇到了同样的问题,我必须用+ 9来修复它。

同样写这个我意识到我可以删除int并且只是将+ 9放在行中。像这样。

ForegroundColorSpan(Color.parseColor("#000000")),8,ii.toString().length() + 9, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);

任何人都知道我怎么能把它变得与众不同,因为我认为.length()会完成它。

1 个答案:

答案 0 :(得分:0)

尝试类似:

String error = "[ERROR]";
int start = error.length() + ii.toString().length();
int end = start + error.length();

在这种情况下,我知道您想要做的就是为错误字符串着色