在EditText中更改文本颜色

时间:2013-08-27 08:09:20

标签: android syntax-highlighting

我正在学习如何制作语法荧光笔。我想问的是如何更改文本某些部分的文本颜色并将其余部分保留为默认颜色?

我的意思是做类似于大多数IDE所做的事情;他们突出显示关键字,让其他人为黑色。

如何在Android EditText或其他视图中完成此操作?

3 个答案:

答案 0 :(得分:3)

如果你想让'EditText'表现得像IDE(即eclipse)那么你需要定义一个你想要用不同颜色的单词列表然后添加这样的函数:

EditText et = new  EditText(mContext);
et.addTextChangedListener(new TextWatcher() {

    @Override
    public void onTextChanged(CharSequence s, int start, int before, int count) {
        // TODO Auto-generated method stub

    }

    @Override
    public void beforeTextChanged(CharSequence s, int start, int count, int after) {
        // TODO Auto-generated method stub

    }

    @Override
    public void afterTextChanged(Editable s) {
        // TODO Auto-generated method stub

    }
});

然后使用'spanable'类为关键词着色:

Spannable wordtoSpan = new SpannableString("I know just how to whisper, And I know just how to cry,I know just where to find the answers");        

wordtoSpan.setSpan(new ForegroundColorSpan(Color.BLUE), 15, 30, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
et.setText(wordtoSpan);

您需要实现一些逻辑来查找关键词的起始和结束索引,然后遍历字符串以设置所需的每个项目的颜色。

答案 1 :(得分:2)

您可以使用这样的html表单。

textView..setText(Html.fromHtml("<font size="5">Here is a size 5 font</font>"));
textView..setText(Html.fromHtml("<font color="#990000">This text is hex color #990000</font>
<br />"));

答案 2 :(得分:1)