Android TextView显示Html类解析的网页和图片及自定义标签用法示例
程序员文章站
2024-03-03 21:05:52
本文实例讲述了android textview显示html类解析的网页和图片及自定义标签。分享给大家供大家参考,具体如下:
android系统显示html网页的最佳控件为...
本文实例讲述了android textview显示html类解析的网页和图片及自定义标签。分享给大家供大家参考,具体如下:
android系统显示html网页的最佳控件为webview,有时候为了满足特定需求,需要在textview中显示html网页、图片及解析自定义标签。
1、textview显示html类解析的网页
charsequence richtext = html.fromhtml("<strong>萝卜白菜的博客</strong>--<a href='http://orgcent.com'>http://orgcent.com</a>"); mtvtext.settext(richtext); //此行必须,否则超链接无法点击,scrollingmovementmethod实现滚动条 mtvtext.setmovementmethod(linkmovementmethod.getinstance());
ps: 如果想同时让内容可滚动和超链接可点击,只要设置linkmovementmethod即可。因为其继承了scrollingmovementmethod。关于scrollingmovementmethod说明,可查看android实现textview垂直或水平滚动
2、textview显示html解析的图片和自定义标签
final string html = "萝卜白菜的博客<img src='http://m3.img.libdd.com/farm3/115/bbe681f0cafb16c6806e6aec1e82d673_64_64.jpg'/><mytag color='blue'>自定义</mytag>"; //处理未知标签,通常是系统默认不能处理的标签 final html.taghandler taghandler = new html.taghandler() { int contentindex = 0; /** * opening : 是否为开始标签 * tag: 标签名称 * output:输出信息,用来保存处理后的信息 * xmlreader: 读取当前标签的信息,如属性等 */ public void handletag(boolean opening, string tag, editable output, xmlreader xmlreader) { if("mytag".equals(tag)) { if(opening) {//获取当前标签的内容开始位置 contentindex = output.length(); try { final string color = (string) xmlreader.getproperty("color"); } catch (exception e) { e.printstacktrace(); } } else { final int length = output.length(); string content = output.subsequence(contentindex, length).tostring(); spannablestring spanstr = new spannablestring(content); spanstr.setspan(new foregroundcolorspan(color.green), 0, content.length(), spannable.span_inclusive_exclusive); output.replace(contentindex, length, spanstr); } } system.out.println("opening:" + opening + ",tag:" + tag + ",output:" + output); }}; //解析图片 final html.imagegetter imagegetter = new html.imagegetter() { public drawable getdrawable(string source) { //在此必须异步加载图片 drawable d = null; try { inputstream is = new defaulthttpclient().execute(new httpget(source)).getentity().getcontent(); bitmap bm = bitmapfactory.decodestream(is); d = new bitmapdrawable(bm); //setbounds(0, 0, bm.getwidth(), bm.getheight()); d.setbounds(0, 0, 200, 300); } catch (exception e) {e.printstacktrace();} return d; } }; richtext = html.fromhtml(html, imagegetter, taghandler); mtvtext.settext(richtext);
更多关于android相关内容感兴趣的读者可查看本站专题:《android控件用法总结》、《android视图view技巧总结》、《android文件操作技巧汇总》、《android操作sqlite数据库技巧总结》、《android操作json格式数据技巧总结》、《android数据库操作技巧总结》、《android编程之activity操作技巧总结》、《android编程开发之sd卡操作方法汇总》、《android开发入门与进阶教程》及《android资源操作技巧汇总》
希望本文所述对大家android程序设计有所帮助。