一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

Andriod中TextView加载Html标签和加载带图片的标签

时间:2016-07-01 编辑:简简单单 来源:一聚教程网

一、加载Html代码

String html=" 百度;";
textView.setMovementMethod(LinkMovementMethod.getInstance());//允许超链接点击跳转到浏览器
textView.setText(Html.fromHtml(html));

 
二、加载src标签

1、加载本地图片

String html="";
textView.setText(Html.fromHtml(html, new Html.ImageGetter() {
    @Override
    public Drawable getDrawable(String source) {
        Drawable drawable = null;
        try {
            drawable = Drawable.createFromStream(new URL(source).openStream(), null);
            drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight());
        } catch (IOException e) {
            e.printStackTrace();
        }
        return drawable;
    }
},null));

注意:file:/别忘了加

Html还有个三参数的fronHtml方法,三个参数分别是:String source(图片资源的路径),ImageGetter imageGetter(实现ImageGetter类的对象),TagHandler tagHandler(暂不知什么用,不过这里设为null就行了)

ImageGetter类是Html类的一个静态接口,有个方法getDrawable,返回值为Drawable,作用是取得图片的Drawable

drawable = Drawable.createFromStream(new URL(source).openStream(), null);

这句代码,有一点要说,不要用网上许多人用的:

drawable= Drawable.createFromPath(source);

可能会报FileNotFound错误。


2、加载网络图片

html代码和之前差不多,把路径换成网络图片的地址就行

比如:

String html="";
但是ImageGetter的getDrawable方法需要变化:

这里使用Piccsso框架加载网络图片,不会的同学可以去百度一下

private class MyImageGetter implements Html.ImageGetter {
    private URLDrawable urlDrawable = null;
 
    @Override
    public Drawable getDrawable(final String source) {
        urlDrawable = new URLDrawable();
        Picasso.with(context).load(source).into(new Target() {
            @Override
            public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) {
                urlDrawable.bitmap = bitmap;
                urlDrawable.setBounds(0, 0, bitmap.getWidth(), bitmap.getHeight());
                textView.setText(textView.getText());//不加这句显示不出来图片,原因不详
            }
 
            @Override
            public void onBitmapFailed(Drawable errorDrawable) {
            }
 
            @Override
            public void onPrepareLoad(Drawable placeHolderDrawable) {
            }
        });
        return urlDrawable;
    }
}

URLDrawable类:

/**
 * Created by Administrator on 2016/6/28 0028.
 */
public class URLDrawable extends BitmapDrawable {
    public Bitmap bitmap;
 
    @Override
    public void draw(Canvas canvas) {
        super.draw(canvas);
        if (bitmap != null) {
            canvas.drawBitmap(bitmap, 0, 0, getPaint());
        }
    }
}

调用方法如下:

textView.setText(Html.fromHtml(html, new MyImageGetter(), null));

热门栏目