Android TextView显示Html类解析的网页和图片及自定义标签用法示例
本文实例讲述了AndroidTextView显示Html类解析的网页和图片及自定义标签。分享给大家供大家参考,具体如下:
Android系统显示HTML网页的最佳控件为WebView,有时候为了满足特定需求,需要在TextView中显示HTML网页、图片及解析自定义标签。
1、TextView显示Html类解析的网页
CharSequencerichText=Html.fromHtml("<strong>萝卜白菜的博客</strong>--<ahref='http://orgcent.com'>http://orgcent.com</a>"); mTVText.setText(richText); //此行必须,否则超链接无法点击,ScrollingMovementMethod实现滚动条 mTVText.setMovementMethod(LinkMovementMethod.getInstance());
PS:如果想同时让内容可滚动和超链接可点击,只要设置LinkMovementMethod即可。因为其继承了ScrollingMovementMethod。关于ScrollingMovementMethod说明,可查看android实现TextView垂直或水平滚动
2、TextView显示Html解析的图片和自定义标签
finalStringhtml="萝卜白菜的博客<imgsrc='http://m3.img.libdd.com/farm3/115/BBE681F0CAFB16C6806E6AEC1E82D673_64_64.jpg'/><mytagcolor='blue'>自定义</mytag>"; //处理未知标签,通常是系统默认不能处理的标签 finalHtml.TagHandlertagHandler=newHtml.TagHandler(){ intcontentIndex=0; /** *opening:是否为开始标签 *tag:标签名称 *output:输出信息,用来保存处理后的信息 *xmlReader:读取当前标签的信息,如属性等 */ publicvoidhandleTag(booleanopening,Stringtag,Editableoutput, XMLReaderxmlReader){ if("mytag".equals(tag)){ if(opening){//获取当前标签的内容开始位置 contentIndex=output.length(); try{ finalStringcolor=(String)xmlReader.getProperty("color"); }catch(Exceptione){ e.printStackTrace(); } }else{ finalintlength=output.length(); Stringcontent=output.subSequence(contentIndex,length).toString(); SpannableStringspanStr=newSpannableString(content); spanStr.setSpan(newForegroundColorSpan(Color.GREEN),0,content.length(),Spannable.SPAN_INCLUSIVE_EXCLUSIVE); output.replace(contentIndex,length,spanStr); } } System.out.println("opening:"+opening+",tag:"+tag+",output:"+output); }}; //解析图片 finalHtml.ImageGetterimageGetter=newHtml.ImageGetter(){ publicDrawablegetDrawable(Stringsource){ //在此必须异步加载图片 Drawabled=null; try{ InputStreamis=newDefaultHttpClient().execute(newHttpGet(source)).getEntity().getContent(); Bitmapbm=BitmapFactory.decodeStream(is); d=newBitmapDrawable(bm); //setBounds(0,0,bm.getWidth(),bm.getHeight()); d.setBounds(0,0,200,300); }catch(Exceptione){e.printStackTrace();} returnd; } }; 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程序设计有所帮助。