android如何在 WebView 控件中组装 HTML 显示

  次阅读 作者:智能小宝 来源:互联网 2015-10-02 21:18 我要评论(0)

本篇将介绍如何在 WebView 控件中组装 HTML 显示。

先上张效果图:

由于在 WebView 上显示HTML,不可能只显示纯文本,而没有一点样式,这会显得很难看,下面代码就是定义了一个全局的样式:

public final static String WEB_STYLE = "<style>* {font-size:16px;line-height:20px;} p {color:#333;} a {color:#3E62A6;} img {max-width:310px;} " +

"pre {font-size:9pt;line-height:12pt;font-family:Courier New,Arial;border:1px solid #ddd;border-left:5px solid #6CE26C;background:#f6f6f6;padding:5px;}</style>";

上面全局样式: * 定义了字体大小以及行高; p 标签内的字体颜色; a 标签内的字体颜色; img 标签的图片最大宽度; pre 为代码样式;

资讯内容是由服务返回的一串带HTML标签的字符串:

String body = newsDetail.getBody();

相关资讯则是由服务返回的数据组装的:

String strRelative = "";

for(Relative relative : newsDetail.getRelatives()){

strRelative += String.format("<a href='%s' style='text-decoration:none'>%s</a><p/>", relative.url, relative.title);

}

图片处理

WebView上显示图片,不能直接显示大图,这会影响页面的美观以及用户体验,因此要过滤掉原始图片的高宽属性,使用全局的图片样式。同时客户端可以根据用户设置,是否加载图片显示,以达到节省流量的目的。

if(isLoadImage){

//过滤掉 img标签的width,height属性

body = body.replaceAll("(<img[^>]*?)\\s+width\\s*=\\s*\\S+","$1");

body = body.replaceAll("(<img[^>]*?)\\s+height\\s*=\\s*\\S+","$1");

}else{

//过滤掉 img标签

body = body.replaceAll("<\\s*img\\s+([^>]*)\\s*>","");

}

WebView展示HTML

mWebView.loadDataWithBaseURL(null, body, "text/html", "utf-8",null);

完整代码:

//资讯内容

String body = newsDetail.getBody();

if(!body.trim().startsWith("<style>")){

body = WEB_STYLE + body;

}

//相关资讯

if(newsDetail.getRelatives().size() > 0)

{

String strRelative = "";

for(Relative relative : newsDetail.getRelatives()){

strRelative += String.format("<a href='%s' style='text-decoration:none'>%s</a><p/>", relative.url, relative.title);

}

body += String.format("<p/><hr/><b>相关资讯</b><div><p/>%s</div>", strRelative);

}

//读取用户设置:是否加载文章图片

if(isLoadImage){

//过滤掉 img标签的width,height属性

body = body.replaceAll("(<img[^>]*?)\\s+width\\s*=\\s*\\S+","$1");

body = body.replaceAll("(<img[^>]*?)\\s+height\\s*=\\s*\\S+","$1");

本站文章信息来源于网络以及网友投稿,本站只负责对文章进行整理、排版、编辑,是出于传递更多信息之目的,并不意味着赞同其观点或证实其内容的真实性。如果您有什么意见或建议,请联系QQ28-1688-302!

人工智能实验室
相关文章相关文章
  • 韩春雨称已能重复实验结果 近期将有消息公布

    韩春雨称已能重复实验结果 近期将有消息公布

  • 英国研发“杀生”机器人 通过生命体获取能量

    英国研发“杀生”机器人 通过生命体获取能量

  • 未来两年人工智能要怎么走?看这篇就够了

    未来两年人工智能要怎么走?看这篇就够了

  • 无人驾驶汽车如何改变城市生活?听听他们怎么说

    无人驾驶汽车如何改变城市生活?听听他们怎么说

网友点评网友点评
阅读推荐阅读推荐

据国外媒体报道,在过去两年内,聊天机器人(chatbot)、人工智能以及机器学习的研发和采用取得了巨大进展。许多初创公司正利用人工智能和...

霍金 视觉中国 图 英国著名物理学家霍金(Stephen Hawking)再次就人工智能(AI)发声,他认为:对于人类来说,强大AI的出现可能是最美妙的...

文|郑娟娟 今年,人工智能(AI) 60岁了。在AI60岁的时候,笔者想要介绍一下AI100,一个刚刚2岁的研究项目,但它的预设寿命是100年,甚至更长...

AlphaGo与李世石的人机大战,为大众迅速普及了人工智能的概念。 但对谷歌而言,除了下围棋,现在的人工智能进展到哪一步了?未来,人工智能...