Android WebView代码高亮

引用自http://www.xukailun.me/article/200/

先说明,本博客是参考了上面的博客后,通过自己的总结写出来的。

要使用WebView来做代码高亮,其实是跟浏览器上的原理一样的,无非都是css和js。这些css和js是有现成的了,来自SyntaxHighlighter,点击可以进入下载页面。 

第一、下载了zip包后,找到里面的shBrushJava.js、shCore.js和shCoreDefault.css文件,把文件复制到项目的assets文件夹中,然后制作index.html。

第二、在assets文件夹中新建一个index.html文件。

在index.html中加上如下代码


<!DOCTYPE html>
<html>
<head>
	<title>code demo</title>
	<script type="text/javascript" src="shCore.js"></script>
	<script type="text/javascript" src="shBrushJava.js"></script>
	<link rel="stylesheet" type="text/css" href="shCoreDefault.css">
	<script type="text/javascript">SyntaxHighlighter.all();</script>
</head>
<body>
	<pre class="brush: java;">
	int i = 1;
	while (i != 5) {
	  	switch (i++ % 3) {
	    case 0:
	      System.out.print("A");
	      break;
	    case 1:
	      System.out.print("B");
	      break;
	    case 2:
	      System.out.print("C");
	      break;
	  }
	}
	</pre>

</body>
</html>
第三、使用WebView加载。


先设置WebView支持JavaScript。用以下语句。


webView.getSettings().setJavaScriptEnabled(true);
然后读取assets中的index.html文件的内容。



try {
	InputStream is = context.getResources().getAssets()
						.open("index.html");
	ByteArrayOutputStream bs = new ByteArrayOutputStream();
	byte[] buffer = new byte[1024];
	int i = 0;
	while ((i = is.read(buffer, 0, buffer.length)) > 0) {
		bs.write(buffer, 0, i);
	}
		content = new String(bs.toString());
	} catch (IOException e) {}
}


接下来吧内容加载到WebView中,webView.loadDataWithBaseURL("file:///android_asset/",
content, "text/html", "utf-8", null);

这样webView显示的代码就可以高亮了,如果要想动态改变代码,可以使用字符串替换的方法,具体方法就不说了。下面说一下SyntaxHighlighter的使用吧。

假如完全使用我的index.html的代码,你会看见左面有序号和一条绿色的线,而右上角就会多了一个问号,如果你想去掉的话就把

<pre class="brush: java;">

改为

<pre class="brush: java; gutter: false; gutter: false;toolbar: false;">
这样就可以了!!!


转载于:https://my.oschina.net/zlLeaf/blog/149193

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值