2015-01-15 55 views
0

我有一個簡單的文本編輯器應用程序,該用戶可以選擇EditText中的單詞並更改其顏色。 所選詞的變色,我用這個代碼:如何設置多個顏色到EditText與選擇單詞

EditText edtText = (EditText) findViewById(R.id.edtText); 
    SpannableStringBuilder sb = new SpannableStringBuilder(edtText.getText().toString()); 
    ForegroundColorSpan fcs = new ForegroundColorSpan(Color.rgb(255, 0, 0)); 
    sb.setSpan(fcs, edtText.getSelectionStart(), edtText.getSelectionEnd(), Spannable.SPAN_INCLUSIVE_INCLUSIVE); 
    edtText.setText(sb); 

此代碼工作正常,但我不能設置多種顏色編輯文本。例如,我寫了「你好,你好嗎?」在EditText中,我想將「你好」變成藍色,並且「你好嗎?」變紅。當我選擇「你好」並將它變成藍色,然後我選擇「你好嗎」並將它變成紅色時,「你好」這個詞將會變成黑色。有誰能夠幫助我? tahnks

回答

0

您需要使用HTML格式:

EditText.setText(Html.fromHtml(htmlformatString)) 
+0

我使用了HTML格式,但是這種方法改變了所有相似詞語的顏色,例如,如果我們寫「你好,我的朋友你好」,並選擇第二個「你好」,併爲它着色,首先「你好」也會着色。可以指導我嗎? – hosseinAmini

+0

如果文本是「你好,我的朋友你好」,並且你想只着色第二個問候HTML文本將是你想要的HTML編輯HTML:「你好我的朋友你好 – user2139223

0

@ user2139223:是的,它是正確的,但在我的應用程序,用戶在書寫文字編輯一份聲明中,可以改變它的顏色。我不知道什麼是陳述和選擇哪個詞。我的問題是,用相似的話說,因爲選擇其中一個顏色,所有這些都將是顏色。 這是我的代碼:一個按鈕

private void colorText(){ 
     EditText edtText = (EditText) findViewById(R.id.edtText); 
     String allText = Html.toHtml(edtText.getText()); 
     String selectedText = edtText.getText().toString().substring(edtText.getSelectionStart(), edtText.getSelectionEnd()); 
     String color = "#ff0000"; 
     String colorText = "<font color=\"" + color + "\">" + selectedText + "</font>"; 
     String text =allText.replace(selectedText, colorText); 
     edtText.setText(Html.fromHtml(text)); 
} 

白衣點擊,我撥打所選詞的這種方法改變顏色爲紅色。

相關問題