2015-01-02 361 views
0

好的我很抱歉這個可怕的標題,我不知道該怎麼說。我使用spannablestringbuilder來做自定義字體着色。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; 

剛剛[錯誤]將如預期紅色。

我有不同的設置相同的問題,我不得不+ 9長度來解決它。

也作爲寫這個我意識到我可以刪除整數,只是把+ 9在線。喜歡這個。

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

任何人都知道我可以使它不同,我不必把+ 9,因爲我認爲.length()會做到這一點。

+0

不僅你的標題是太可怕了,身體也一樣,我不t明白你的意思是什麼... – pskink

+0

是的,毫無疑問,我在凌晨3點寫了這篇文章,並將其寫入代碼審查,然後上牀睡覺,只需在這裏複製粘貼,不需要校對。 – andyADD

回答

0

嘗試類似:

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

這是我理解的情況下,你唯一想做的就是顏色錯誤字符串

+0

是的,我會試一試謝謝你! – andyADD