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程序设计有所帮助。