2017-08-05 62 views
0

我正在寫一個包含一些代碼片段的應用程序。如何突出顯示android中的代碼片段?

作爲通常的方式,它可以在TextView中顯示,但我想突出顯示一些關鍵字說「主」,「int」,「類」,「返回」等,經過很多時間我想出它可以可以使用加載到webview的html和css來完成,但它有一些缺點,比如渲染速度慢,所以會造成不好的用戶體驗。

有沒有更好的方法來處理解決方案? 這將是巨大的,給我一些代碼示例...

感謝

+0

「經過大量的時間我想出了它可以完成使用HTML和CSS加載到WebView,但它有一些缺點,如緩慢的渲染,所以它使壞的用戶體驗」 - 我沒有問題顯示格式化源代碼在'WebView'中。 – CommonsWare

+0

你確定嗎?只需使用TextView等本機小部件進行測試即可。 說你的ParentLayout由兩個小部件,TextView和WebView加載一些文本和比較渲染時間... 此外有時webview會變空白!我不知道爲什麼 –

+0

「你確定嗎?」 - 考慮到我作爲一個APK發佈了[我的書](https://commonsware.com/Android)好幾年了,並且我在章節中使用了格式化的源代碼,並且這些章節顯示在「WebView」中小工具,是的,我相當確定它的工作原理。 – CommonsWare

回答

0

使用SpannableString:

SpannableString string = new SpannableString("Your text that has to be highlighted"); 
string.setSpan(new BackgroundColorSpan(Color.YELLOW), 0, 10, 0); 
textView.setText(string); 

BackgroundColorSpan改變背景顏色。同時檢查ForegroundColorSpan。

或者使用Html.fromHtml它接受HTML標籤:因爲它涉及解析字符串

String text1 = "Start your text "; 
String text2 = "<font color='#EE0000'>and it is now red</font>"; 
textView.setText(Html.fromHtml(text1 + text2)); 

的Html方式可能會比SpannableString慢一點。

+0

如果我的代碼段包含100行,該怎麼辦? 有沒有辦法自動模板? –

+0

您必須給出必須突出顯示的文本的起始索引和結束索引。 – Bob

+0

是的,但在我的情況下,我有大約100個代碼片段,這是一些繁瑣的手動設置,我希望這可以自動完成? 就像css標籤 –