1

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

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

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

4

3 回答 3

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

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

于 2013-08-27T09:20:57.413 回答
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 />"));
于 2013-08-27T08:24:48.773 回答
1

检查SpannbleStringBuilder

更多详细信息:Android:使用 TextView.setText() 为字符串的一部分着色?

于 2013-08-27T08:12:37.017 回答