优化EditText语法突出显示(可跨越)

时间:2016-08-08 10:33:45

标签: java android

我正在开发一个Android代码编辑器,但是当我对其应用语法高亮时,它会变得非常迟缓,有没有什么方法可以优化它?

这是我的代码:

 protected void onCreate(Bundle savedInstanceState) {

     scriptEditor.addTextChangedListener(new TextWatcher() {

             @Override
             public void afterTextChanged(Editable s) {
                 applySyntax(s);
             }
         };
     }
     public void applySyntax(Spannable spannable) {
         matchz = WORDPat.matcher(spannable);
         while (matchz.find()) {
             Integer color = null;
             if (StringKeyword.contains(matchz.group())) {
                 color = Integer.valueOf(keyColor);
                 type = "keyword";
             }
             if (StringKeyword2.contains(matchz.group())) {
                 color = Integer.valueOf(keyColor2);
                 type = "keyword";
             }
             if (StringKeyword3.contains(matchz.group())) {
                 color = Integer.valueOf(keyColor3);
                 type = "keyword";
             }
             if (color != null) {
                 spannable.setSpan(new ForegroundColorSpan(color.intValue()), matchz.start(), matchz.end(), 0);
                 color = null;
             } else {
                 spannable.setSpan(new ForegroundColorSpan(Color.WHITE), matchz.start(), matchz.end(), 0);
             }
         }
     }
 }

1 个答案:

答案 0 :(得分:0)

您可以像在此项目中一样使用语法突出显示代码: https://github.com/vmihalachi/turbo-editor

(参见MainActivity.java中的“Editor”类)

您应突出显示 仅可见部分 ,但不能同时突出显示所有文字。

(P.S我很抱歉,如果文中有错误,我不懂英语