如何设置多个颜色到EditText与选择单词

问题描述:

我有一个简单的文本编辑器应用程序,该用户可以选择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

您需要使用HTML格式:

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

我使用了HTML格式,但是这种方法改变了所有相似词语的颜色,例如,如果我们写“你好,我的朋友你好”,并选择第二个“你好”,并为它着色,首先“你好”也会着色。可以指导我吗? – hosseinAmini

+0

如果文本是“你好,我的朋友你好”,并且你想只着色第二个问候HTML文本将是你想要的HTML编辑HTML:“你好我的朋友 font color = “red”>你好 – user2139223

@ 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)); 
} 

白衣点击,我拨打所选词的这种方法改变颜色为红色。