WebView使用SyntaxHighlighter实现代码高亮

在上一篇文章中已经解决图片的适配问题,现在查看博文时只有长代码(代码的宽度超过屏幕宽度)会导致水平滑动,并且代码没有高亮显示,使得可读性很差。查找资料得到一个开源的插件SyntaxHighlighter,通过css、js实现代码高亮度。

查看CSDN博文的源码发现代码的标签都是<pre name="code" class="java">,html的<pre>标签是可以保持原有内容的格式,name属性是表明内容为代码,class属性表明代码的类型。

SyntaxHighlighter的使用正是修改<pre>标签的class属性<pre class="brush: java; gutter: false;">

其中java就是指代码类型,gutter是设置行号,false为不显示行号。

在使用前还需要调用基本的js、css包,核心的shCore.js、shCore.css、shThemeDefault.css,其他的就是根据需求添加相应的包。下载地址SyntaxHighlighter

需要在html标签内添加的代码:

	// 链接样式文件,代码块高亮的处理
	public final static String linkCss =
			  "<script type=\"text/javascript\" src=\"file:///android_asset/shCore.js\"></script>"
			+ "<script type=\"text/javascript\" src=\"file:///android_asset/shBrushCpp.js\"></script>"
			+ "<script type=\"text/javascript\" src=\"file:///android_asset/shBrushXml.js\"></script>"
			+ "<script type=\"text/javascript\" src=\"file:///android_asset/shBrushJScript.js\"></script>"
			+ "<script type=\"text/javascript\" src=\"file:///android_asset/shBrushJava.js\"></script>"
			+ "<link rel=\"stylesheet\" type=\"text/css\" href=\"file:///android_asset/shThemeDefault.css\">"
			+ "<link rel=\"stylesheet\" type=\"text/css\" href=\"file:///android_asset/shCore.css\">"
			+ "<script type=\"text/javascript\">SyntaxHighlighter.all();</script>";

其中导入了cpp、xml、javascript、java等额外的四个包。

需要把相应的文件(从下载的包里面选取)置于Android项目的assets文件夹下,shThemeDefault.css文件里面是定义的默认的一些样式,主要是代码颜色的配置;shCore.css文件主要是代码的缩进,以及其他的布局配置。

我的需求是长代码不换行,但是可以水平滚动,这样的话修改shCore.css文件

.syntaxhighlighter .line .content
{
	padding-left: .5em !important;
	white-space: pre !important; /**强制不换行 */
}
.syntaxhighlighter .lines.no-wrap
{
	overflow: auto !important;<span style="font-family: Consolas, 'Lucida Console', monospace;">/**可滚动 */</span>
	overflow-y: hidden !important;<span style="font-family: Consolas, 'Lucida Console', monospace;">/**竖直不可滚动 */</span>
	white-space: nowrap!important;
}

经过以上的配置,然后就是修改<pre>标签的class属性了,方法跟上一篇文章一样的:

			Elements codeElements = detail.select("pre[name=code]");
			for (Element codeNode : codeElements) {
				codeNode.attr("class", "brush: java; gutter: false;");
				Log.i(TAG, "codeNode.text()" + codeNode.text());
			}

			return JsoupUtil.linkCss + detail.toString();

注意把刚才定义的css样式添加到html代码(detail)中。因为我只是把html中文章内容部分截取出的片段,所以可以直接通过字符串拼接完成,如果是整个html的话就需要通过jsoup操作了。

经过如此的处理,博文的显示终于是把宽度问题搞定了。

ps:今天意外发现csdn有开放的接口,后期如果方便的话,会通过接口完成CSDNBlog客户端。

时间: 2024-11-08 21:58:25

WebView使用SyntaxHighlighter实现代码高亮的相关文章

测试SyntaxHighlighter插件代码高亮显示效果

/** *从一段文本中检索出唯一的结果 *@param regex 正则表达式语句 *@param text 要检索的文本 *@return */ public String regx(String regx, String text) { Matcher matcher = Pattern.compile(regx).matchter(text); if(matcher.find()) rerturn matcher.group(); else return null; }

主题: 为kindsoft编辑器替换SyntaxHighlighter代码高亮,整合DEDECMS

作者: fmamcn, 发布日期: 2012-09-29 12:28:39, 浏览数: 1567 看了狼魂发表的将kindeditor中的代码高亮插件prettify换为SyntaxHighlighter 自己试了一下,总有一些问题,后来还是自己研究了一下,找了一些文档,做了一个 DeDeCMS本身的标记其不好用,更换为KindEditor后确实很不错了,但是KindEditor编辑器的代码高亮确实不怎么好看,也不怎么使用,虽然很简洁,但是功能上还是显得匮乏一些,所以就动手改了改,现在分享出来!

SyntaxHighlighter 代码高亮极简单配置

页首Html代码: <!--<link type="text/css" rel="stylesheet" href="https://blog-static.cnblogs.com/files/WNpursue/shCoreRDark.css"/>--> <script type="text/javascript" src="https://blog-static.cnblogs.com

SyntaxHighlighter代码高亮插件

SyntaxHighlighter是Google Code上的一个开源项目,主要用于给网页上的代码着色, 使用十分方便,效果也不错,而且几乎支持常见的所有语言. 使用步骤: 一.下载并解压缩SyntaxHighlighter(http://download.csdn.net/detail/itmyhome/7757359)当前版本3.0.83 二.引入文件 将解压后的scripts和styles文件夹复制到项目中,在页面中引入shCore.js和核心CSS文件shCore.css 其次引入你要高

代码高亮插件SyntaxHighlighter

一 第一 解压压缩包,scripts文件夹中包含了各种语言的JS文件,在styles文件夹中是各种显示高亮的主题 第二 如何使用?首先要引入其核心javascript文件shCore.js和核心CSS文件shCore.css,这两个是必选要引入的.其次引入你要高亮的语言JS,比如我想高亮显示的是C#,那么必须引入在scripts文件夹中的shBrushCSharp.js,最后引入高亮显示的主题CSS,默认的为shThemeDefault.css 第三 下面以高亮显示JavaScript代码为例讲

[博客美化] 博客园SyntaxHighlighter代码高亮

在网上搜了一圈,觉得用Windows Live Writer/Open Live Writer代码着色太繁琐了,仅仅为了实现博客代码着色功能就要下载新软件和搞一堆配置.Win10用户只能使用Open Live Writer.Web端能干的事干嘛多搞功夫.如果不愿意网页登陆账号只想通过OLW软件编辑全文并且发布的话,可以参考这个:https://www.cnblogs.com/huntdream/p/6006350.html,说得很清楚了. [ 补充:下载完SyntaxHighlighter插件需

[转]7个高性能JavaScript代码高亮插件

对于喜欢写技术博客的同学来说,一定对代码高亮组件非常熟悉.一款优秀的JavaScript代码高亮插件,将会帮助你渲染任何一种编程语言,包括一些关键字的着色,以及每行代码的缩进等.今天我们要来分享一些高性能的JavaScript代码高亮插件,这些JavaScript代码高亮插件将非常有效地帮你实现在网页上的代码编辑和展示. 1.SyntaxHighlighter – 最优秀的JavaScript代码高亮插件 SyntaxHighlighter 是一款完全基于JavaScript的代码高亮插件,Sy

7个高性能JavaScript代码高亮插件

本文由码农网 – 小峰原创,转载请看清文末的转载要求,欢迎参与我们的付费投稿计划! 对于喜欢写技术博客的同学来说,一定对代码高亮组件非常熟悉.一款优秀的JavaScript代码高亮插件,将会帮助你渲染任何一种编程语言,包括一些关键字的着色,以及每行代码的缩进等.今天我们要来分享一些高性能的JavaScript代码高亮插件,这些JavaScript代码高亮插件将非常有效地帮你实现在网页上的代码编辑和展示. 1.SyntaxHighlighter – 最优秀的JavaScript代码高亮插件 Syn

[Html]Jekyll 代码高亮的几种选择

序 新年第一炮,轻松加愉快的,来完成一些年前准备写的文章.Jekyll 中格式化代码有很多种方式,在这里说说几种的实现方式. Jekyll Jekyll 是一种通过模版和数据编译为HTML的工具,说是工具,但是也可以说是服务,如果借助Github(搭建有Jekyll服务,可以实时编译)可以做出半动态网页:对于没有自己服务器的朋友来说是不错的选择. 一般情况下,使用Github+Jekyll来搭建博客和一些说明性质的网页. 之前有发表WIN系统下搭建的文章:[环境搭建]Windows下安装Ruby