当前位置: 移动技术网 > IT编程>移动开发>Android > Android TextView显示Html类解析的网页和图片及自定义标签用法示例

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

2019年07月24日  | 移动技术网IT编程  | 我要评论

阳春市实验小学,wsockexpert.exe,执掌神权笔趣阁

本文实例讲述了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程序设计有所帮助。

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网