欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android TextView显示Html类解析的网页和图片及自定义标签用法示例

程序员文章站 2024-03-05 09:03:30
本文实例讲述了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程序设计有所帮助。