简体   繁体   English

使用Java修饰的Android语法高亮显示,而不显示(小于)<或<=登录textview?

[英]Android syntax highlighting using Java prettify, not showing (less than) < or <= sign in textview?

I am using java Prettify for syntax highlighting of java code in android app. 我正在使用Java Prettify在android应用中突出显示Java代码的语法。 I followed this example Android Syntax Highlighting? 我遵循此示例Android语法突出显示了吗?

public class PrettifyHighlighter {
    private static final Map<String, String> COLORS = buildColorsMap();

    private static final String FONT_PATTERN = "<font color=\"#%s\">%s</font>";

    private final Parser parser = new PrettifyParser();

    public String highlight(String fileExtension, String sourceCode) {
        StringBuilder highlighted = new StringBuilder();
        List<ParseResult> results = parser.parse(fileExtension, sourceCode);
        for(ParseResult result : results){
            String type = result.getStyleKeys().get(0);
            String content = sourceCode.substring(result.getOffset(), result.getOffset() + result.getLength());
            highlighted.append(String.format(FONT_PATTERN, getColor(type), content));
        }
        return highlighted.toString();
    }

    private String getColor(String type){
        return COLORS.containsKey(type) ? COLORS.get(type) : COLORS.get("pln");
    }

    private static Map<String, String> buildColorsMap() {
        Map<String, String> map = new HashMap<>();
        map.put("typ", "000000"); // black
        map.put("kwd", "760098"); // violet
        map.put("lit", "001ab7"); // dark blue
        map.put("com", "999999"); // grey, comments
        map.put("str", "ff4500"); // dark orange
        map.put("pun", "333333"); // 90% black
        map.put("pln", "156f15"); // dark green
        return map;
    }
}

and using it in the textview as 并在textview中将其用作

        PrettifyHighlighter highlighter = new PrettifyHighlighter();
        String code="public class Example {  \n" +
                "public static void main(String args[]) {  \n" +
                "    for(int i=1; i<=5; i++){  \n" +
                "        if(i==3){  \n" +
                "            break;  \n" +
                "        }  \n" +
                "        System.out.println(i);  \n" +
                "    }  \n" +
                "}  \n" +
                "}  ";
        String highlighted = highlighter.highlight("java", code);
        textView.setText(Html.fromHtml(highlighted.replace("\n","<br/>"),Html.FROM_HTML_MODE_COMPACT));

xml XML

<TextView
    android:id="@+id/textView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignLeft="@+id/ivImage3"
    android:layout_alignStart="@+id/ivImage3"
    android:layout_below="@+id/ivImage3"
    android:scrollbars = "vertical"
    android:layout_marginTop="@dimen/program_margin_top"
    android:background="@drawable/textlines"
    android:textSize="16dp"
    android:text="" />

OUTPUT: OUTPUT: 在此处输入图片说明

as you can see <= is missing from the output, it is just showing i5 instead of i<=5 如您所见,输出中缺少<=,它只是显示i5而不是i <= 5

What is the reason that < is not shown in the textview, how can I display < in the syntax highlighted texview? 是什么原因导致<不能在文本视图中显示,如何在<语法突出显示的texview中显示<? Any help is appreciated 任何帮助表示赞赏

Try this one 试试这个

&lt; for <

&gt; for >

&amp; for &

Hope this will help out to display the escape characters in an XML file. 希望这将有助于在XML文件中显示转义字符。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM