【问题标题】:How to highlight Java syntax in a textview?如何在文本视图中突出显示 Java 语法?
【发布时间】:2018-04-03 07:48:33
【问题描述】:

我知道这是一个老问题,但是对于较新版本的 android,可用的答案要么不起作用,要么已贬值。请提供适用于 Android 5.0 及更高版本的解决方案。

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    TextView textView = findViewById(R.id.text);

    String javacode="import java.util.Scanner;\n" +
            "class Addigit\n" +
            "{\n" +
            "public static void main(String args[])\n" +
            "{\n" +
            "Scanner sc=new Scanner(System.in);\n" +
            "System.out.println(\"enter the no..\");\n" +
            "int n=sc.nextInt();\n" +
            "int fd=n%10;\n" +
            "int rd=n/10;\n" +
            "int sd=rd%10;\n" +
            "rd=rd/10;\n" +
            "int td=rd%10;\n" +
            "System.out.println((fd+sd+td));\n" +
            "}\n" +
            "}";

    textView.setText(javacode);
}

如何突出显示语法,就像 stackoverflow 使用这个 java 代码或类似 Android Studio 所做的那样。

【问题讨论】:

  • 尝试对所有java关键字使用正则表达式。所以使用PatternMatcher类。
  • Stackoverflow 并不是一个神奇的地方,你要求一些代码,每个人都争先恐后地为你编写。我们在这里帮助你编写你编写的代码并为你提供一些帮助
  • 我也同意 cssGeek。下次上传问题的时候永远记得。但当时我给出了解决方案。
  • 我同意你们俩的观点,下次我一定会把带有问题的代码示例,谢谢您的建议:)

标签: java android textview syntaxhighlighter google-code-prettify


【解决方案1】:

尝试使用这个

String javacode="Your Java Code";
Pattern pattern = Pattern.compile("float"); //Java keyword
Matcher m = pattern.matcher(javacode);
SpannableString str = new SpannableString(javacode);
while (m.find()) {
str.setSpan(new BackgroundColorSpan(Color.YELLOW), m.start(), m.end()-1, 0);                       
}
textView.setText(str);

【讨论】:

  • 这个工作正常,但我必须为每个 java 关键字编写代码...,没有更好的解决方案可以自动检测关键字...?
  • 是的,或者您可以使用带有空格的 java 代码 split() 并为所有 java 关键字创建另一个字符串数组数组,并将每个单词的 java 代码与 java 关键字数组匹配。标记正确并赞成我的回答。
猜你喜欢
  • 2012-02-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-25
  • 1970-01-01
  • 1970-01-01
  • 2011-09-25
  • 1970-01-01
相关资源
最近更新 更多