Android TextView加载带有图片的Html文本

本文介绍如何在Android中使用TextView显示包含图片的Html文本。首先,你需要导入特定的jar包并添加依赖,然后在Activity中创建TextView,并通过自定义的ImageLoader类实例化来加载和显示HTML文本中的图片。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、导入jar包并添加依赖
(1)需要导入第三方jar包进行图片的加载处理
jar包下载地址:https://pan.baidu.com/s/1-o_hzhZoIHDeBi-ql_RwIg (提取码:bqys)
(2)将下载好的文件复制到libs文件夹下,右键Add As Library添加依赖。

二、在Activity中进行文本的加载处理
(1)创建一个activity,布局文件添加一个TextView控件即可
(2)添加两个相关处理类

public class URLImageParser implements Html.ImageGetter {
        TextView mTextView;
        public URLImageParser(TextView textView) {
            this.mTextView = textView;
        }
        @Override
        public Drawable getDrawable(String source) {
            final URLDrawable urlDrawable = new URLDrawable();
            ImageLoader.getInstance().loadImage(source,
                    new SimpleImageLoadingListener() {
                        @Override
                        public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {
                            urlDrawable.bitmap = loadedImage;
                            urlDrawable.setBounds(0, 0, loadedImage.getWidth(), loadedImage.getHeight());
                            mTextView.invalidate();
                            mTextView.setText(mTextView.getText());
                        }
                    });
            return urlDrawable;
        }
}
    
public class URLDrawable extends BitmapDrawable {
        protected Bitmap bitmap;
        @Override
        public void draw(Canvas canvas) {
            if (bitmap != null) {
                canvas.drawBitmap(bitmap, 0, 0, getPaint());
            }
        }
}

(3)在onCreate方法中对ImageLoader进行实例化

contentTv = (TextView) findViewById(R.id.contentTv);
ImageLoader imageLoader = ImageLoader.getInstance();//实例化 ImageLoade
imageLoader.init(ImageLoaderConfiguration.createDefault(this));
final URLImageParser imageGetter = new URLImageParser(contentTv);

(4)setText

String str = "<p></p><p>(原标题:汇丰、渣打相继切断与华为业务往来)</p><p></p><p>【文/观察者网 尹哲】据《华尔街日报》当地时间20日报道,两家全球性银行决定不再向<a href="http://money.163.com/keywords/5/4/534e4e3a/1.html" title="华为" target="_blank">华为</a>提供金融服务。</p><p>报道援引熟悉上述决定的人士说法称,这两家银行分别是<a href="http://money.163.com/keywords/6/4/6c474e3094f6884c/1.html" title="汇丰银行" target="_blank">汇丰银行</a>(HSBC)和<a href="http://money.163.com/keywords/6/2/6e23625394f6884c/1.html" title="渣打银行" target="_blank">渣打银行</a>(Standard Chartered),<b>原因是华为的风险太高。</b></p><p><img alt="汇丰、渣打银行相继切断与华为业务往来:风险太高" src="http://cms-bucket.nosdn.127.net/2018/12/21/62a63493a847466b99741997250de802.jpg" width="600" height="400"></p><p>香港中环金融中心,渣打银行、汇丰银行等。图源:视觉中国</p><p>其中有人透露,<strong>汇丰银行</strong>是<strong>去年</strong>作出这个决定的。</p><p>2016年,该行和一家法院指定的机构向<a href="http://money.163.com/keywords/7/8/7f8e56fd/1.html" title="美国" target="_blank">美国</a>检察机关举报了华为的可疑交易。</p>";
contentTv.setText(Html.fromHtml(str, imageGetter, null));
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值