有誰知道在Android上工作的語法高亮庫嗎?我看過jsyntaxpane,但似乎並不支持Android。Android語法高亮顯示?
回答
對於只讀語法高亮,你有兩個選擇:
找到一個Java庫,可以語法高亮和使用
<font color="">
(即無CSS)生成HTML。然後您可以使用Html.fromHtml()
創建一個Spanned
對象,您可以使用該對象TextView
。查找可以語法高亮並生成任何類型的HTML的Java庫。然後您可以在
WebView
中顯示。這似乎是鏈接到的評論者所做的。
如果您正在尋找的語法高亮的編輯,即顯著更加困難。雖然EditText
可以採用與TextView
相同的Spanned
,但您必須通過語法高亮顯示器來運行所有內容,以反映每次按鍵或在鍵入暫停後的更改。或者,您需要在編輯過程中更加嚴格地烘烤語法高亮規則,以便您可以以某種方式增量調整高亮顯示,而不必重新編寫EditText
的全部內容。儘管如此,我還沒有看到Android的開源語法高亮編輯器 - 一些封閉源代碼作爲Play商店中的應用程序。
好吧,我做了一個Android的開放源代碼的語法高亮編輯:
https://github.com/markusfisch/ShaderEditor
這是很簡單的,也許只適合小數據,但它可能是一個很好的起點。
非常好的例子。它絕對顯示它的簡單。EditText來源:https://github.com/markusfisch/ShaderEditor/blob/master/src/de/markusfisch/android/shadereditor/ShaderEditor.java – JRomero 2013-09-26 16:49:18
@JRomero鏈接不't似乎再也無法工作了 – 2016-09-25 19:12:48
上面的鏈接被破壞了[這是一個新鏈接](https://github.com/markusfisch/ShaderEditor/blob/5af7129d05a1d122923ae78d110a55a09597589f/app/src/main/java/de/markusfisch/android/ shadereditor /widget/ShaderEditor.java) – 2016-11-04 01:10:13
基於Prettify,我設法爲Android創建了語法突出顯示器。實際上,當我找到Java Prettify時很容易。只需下載它(不幸的是,它不會爲maven發佈)並將其jar添加到您的應用程序的構建路徑。
語法熒光筆我創建基於它:
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", "87cefa");
map.put("kwd", "00ff00");
map.put("lit", "ffff00");
map.put("com", "999999");
map.put("str", "ff4500");
map.put("pun", "eeeeee");
map.put("pln", "ffffff");
return map;
}
}
語法的顏色是硬編碼的,但也可通過應用程序即偏好來也被設置。爲了在TextView
顯示的Java源代碼,只是做:
// code is a String with source code to highlight
// myTextView is a TextView component
PrettifyHighlighter highlighter = new PrettifyHighlighter();
String highlighted = highlighter.highlight("java", code);
myTextView.setText(Html.fromHtml(highlighted));
Java的美化庫繞製成50KB大我的應用程序。
@wojciech完美而準確................ – 2014-09-20 11:36:29
@WojciechFrączDude,C代碼怎麼樣? 等待回覆 – 2014-10-04 08:29:20
@Tarun,先取代「 java「與」c「或」cpp「的爭執 – fracz 2014-10-04 10:27:09
我已經創建了一個可以解決您的問題的文本高亮的API。
https://github.com/nakshay/TextHighlighter
該API允許你通過特定的單詞和顏色,將返回其與HTML標籤的格式,你可以發送到Html.fromHtml字符串()獲取高亮顯示的文本。將Gradle依賴關係添加到您的模塊的gradle文件中。
compile 'com.github.akshay-naik:texthighlighterapi:1.1.0'
總是歡迎與潛在解決方案的鏈接,但請爲未來的訪問者添加一些詳細信息,以防鏈接不再可用。 – 2016-08-15 08:44:43
感謝您的建議Nikolay。增加更多細節。 – Akshay 2016-08-16 13:00:52
我用它我找不到這個函數highlighter.setLanguage(); – 2017-11-15 21:39:12
- 1. Android中的語法高亮顯示爲
- 2. Android:語法高亮?
- 3. MicroEmacs的語法高亮顯示
- 4. 使用JavaScript語法高亮顯示
- 5. ExtJS中的語法高亮顯示?
- 6. FAME的Vim語法高亮顯示
- 7. Aptana中的JavaScript語法高亮顯示
- 8. VS2008中的VBScript語法高亮顯示?
- 9. Lein REPL中的語法高亮顯示?
- 10. TextBox中的GWT語法高亮顯示
- 11. JavaScript中的Markdown語法高亮顯示
- 12. Coda 2的語法高亮顯示?
- 13. 爲jinja2 vim語法高亮顯示?
- 14. Eclipse RCP中的語法高亮顯示
- 15. 使用GTK3語法高亮顯示SourceView
- 16. 語法高亮顯示Combine diff和xxx
- 17. Xcode語法高亮顯示的問題
- 18. Visual Studio Disassembly語法高亮顯示
- 19. MS Word中的語法高亮顯示
- 20. PyCharm中的Ruby語法高亮顯示?
- 21. vim的Razor .cshtml語法高亮顯示?
- 22. 使用C#語法高亮顯示?
- 23. Confluence的C#語法高亮顯示
- 24. 語法高亮示例?
- 25. Android Studio:使用語法高亮顯示覆制文本
- 26. 語法高亮
- 27. 針對示例編程語言的語法高亮顯示
- 28. GitHub Wiki上的語法高亮顯示:指定編程語言
- 29. VS2008中針對域特定語言的語法高亮顯示?
- 30. 具有選擇性屬性高亮的語法高亮顯示 - VS Addin
yiu想要突出什麼? – Ahmad 2012-08-16 13:01:16
請詳細說明你的問題,你想要突出顯示哪個組件? – 2012-08-16 13:01:29
http://code.google.com/p/android-codepad/ – 2012-08-16 13:07:35