2017-08-05 77 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标签 –