如何为edittext实现一个简单的语法高亮方法?

时间:2013-12-18 21:29:26

标签: java android android-edittext syntax-highlighting

我正在创建一个涉及编码的应用程序,我需要编辑文本来识别键入的单词是否为“某事物”然后取决于它是否已注册为彩色,它将为该单词着色。这是我想要做的,当用户键入并键入“功能”时,我希望它自动突出显示。同样适用于任何其他“功能”字样,“()”,“”以及用户输入的许多其他字词。

1 个答案:

答案 0 :(得分:8)

您可以使用TextWatcher这样完成此操作:

    editText.addTextChangedListener(new TextWatcher() {
        final String FUNCTION = "function";
        @Override
        public void beforeTextChanged(CharSequence s, int start, int count, int after) {}

        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {}

        @Override
        public void afterTextChanged(Editable s) {
            int index = s.toString().indexOf(FUNCTION);
            if (index >= 0) {
                s.setSpan(
                        new ForegroundColorSpan(Color.CYAN),
                        index,
                        index + FUNCTION.length(),
                        Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
            }
        }
    });