最近在项目中有需求使用到了富文本,在android中我们设置TextView显示富文本,如果不涉及图片的话还是比较简单的

TextView tv = new TextView(this);
Spanned spanned = Html.fromHtml(content);
tv.setText(spanned);

但是如果html中有图片的话就会出现以下情况,原本会出现图片的地方出现了空格:

所以需要在填充富文本的时候对图片处理一下,Html中提供了两个方法

Html.fromHtml(String source);
Html.fromHtml(String source, Html.ImageGetter imageGetter, Html.TagHandler tagHandler);

其中三参的方法fromHtml可以处理图片的问题,需要匿名内部类实现 ImageGetter,第三个参数可以设置null;

同时因为 ImageGetter 内部类是根据URL来获取网络图片填充富文本的,所以是一个耗时操作,需要放在子线程中实现,而TextView的setTest又是更新UI的操作,所以可以利用Handler,完整代码如下:

private Handler mHandler = new Handler() {@Overridepublic void handleMessage(Message msg) {switch (msg.what) {case 1:CharSequence charSequence = (CharSequence) msg.obj;if (charSequence != null) {hotActivityContent.setText(charSequence);hotActivityContent.setMovementMethod(LinkMovementMethod.getInstance());}break;default:break;}}
};
private void setActivityContent(final String activityContent) {new Thread(new Runnable() {@Overridepublic void run() {Html.ImageGetter imageGetter = new Html.ImageGetter() {@Overridepublic Drawable getDrawable(String source) {Drawable drawable;drawable = ImageUtils.getInstance().getImageNetwork(source);if (drawable != null) {drawable.setBounds(0, 0, drawable.getMinimumWidth(), drawable.getMinimumHeight());} else if (drawable == null) {return null;}return drawable;}};CharSequence charSequence = Html.fromHtml(activityContent.trim(), imageGetter, null);Message ms = Message.obtain();ms.what = 1;ms.obj = charSequence;mHandler.sendMessage(ms);}}).start();
}
/*** 连接网络获得相对应的图片* @param imageUrl* @return*/
public Drawable getImageNetwork(String imageUrl) {URL myFileUrl = null;Drawable drawable = null;try {myFileUrl = new URL(imageUrl);HttpURLConnection conn = (HttpURLConnection) myFileUrl.openConnection();conn.setDoInput(true);conn.connect();InputStream is = conn.getInputStream();// 在这一步最好先将图片进行压缩,避免消耗内存过多Bitmap bitmap = BitmapFactory.decodeStream(is);drawable = new BitmapDrawable(bitmap);is.close();} catch (Exception e) {e.printStackTrace();}return drawable;
}

富文本在TextView中显示图片相关推荐

  1. android textview图片,Android如何在TextView中显示图片

    大家好,今天和大家分享如何在TextView中加入图片的功能,有两种方式,第一种是继承TextView实现图片通过重写来实现图片的显示功能,第二种是利用现成的api实现图片的显示功能.我们知道Text ...

  2. 从富文本(html字符串)中获取图片,js获取富文本中的第一张图片(正则表达式)

    js获取富文本中的第一张图片url正则公式及去除字符串里面的html标签 后台发来一个富文本字符串里面可能包含了0.1.2.3-个图片标签(img),我们的任务是获取这个字符串里面第一张图片的url, ...

  3. Android - 文字中显示图片

    Android TextView中显示图片的4种方式 转载于:https://www.cnblogs.com/qlky/p/7282658.html

  4. vue 富文本 quill 编辑器,实现图片上传到服务器,以及实时字数统计

    vue 富文本 quill 编辑器,实现图片上传到服务器,以及实时字数统计 写在前面 vue 富文本 quill / vue-quill-editor 如何使用 图片上传到服务器 实时字数统计 图片编 ...

  5. QT QTextEdit富文本插入字体-表格-编号-图片-查找-语法高亮功能

    QT QTextEdit富文本插入字体-表格-编号-图片与查找功能,输入char 自动变成蓝色-语法高亮功能 QTQTextEdit富文本插入字体-表格-编号-图片-查找-语法高亮功能.rar-QT文 ...

  6. linux终端查看文件夹图片,如何在Linux终端中显示图片

    Linux 上有许多 GUI 图片浏览器.但我尚未听说或使用过任何在终端中显示图片的应用程序.幸运的是,我刚刚发现了一个可用于在终端中显示图像的名叫 FIM 的图像查看器.FIM 引起了我的注意,是因 ...

  7. python中显示图片和文字

    python中显示图片和文字 这里的实现方法有两种:一种是python结合opencv实现:一种是python自带的matplot工具来实现的. python+opencv实现 python+matp ...

  8. VC 中用 IPicture 在窗口中显示图片文件

    #include <windows.h>  // Windows SDK 要用到的 #include <commdlg.h>  // 打开文件的窗口要包含这个头文件 //用到了 ...

  9. ReportViewer报表模版中显示图片

    在做项目中.我们可能会经常遇到需要在报表中显示图片的需求.如果说这个图片是个固定的,只是作为一个报表的标题或者logo之类的.那么就很简单,可是对于那些保存在数据库中或者通过程序生成的一个内存中的图片 ...

最新文章

  1. Jedis工具类(含分布式锁的调用和释放)
  2. 最长公共子序列Java代码实现
  3. 使用Vysper,TomEE和PrimeFaces将XMPP服务器嵌入JSF Web应用程序内部
  4. B - ACM小组的古怪象棋 【地图型BFS+特殊方向】
  5. 领扣(LeetCode)删除链表的倒数第N个节点 个人题解
  6. SAP License:复制或删除全数字的公司代码的TK455错误
  7. 在java中创建线程有几种办法_Java中创建线程的几种主流方式
  8. [转载] Python学习系列之下划线与变量命名规则
  9. cad图纸问号怎么转换文字_CAD打开图纸后为什么文字显示为问号?怎么解决?
  10. 无涂层无胶纸(UWF)的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  11. 小学英语与计算机技术整合,信息技术与小学英语课程整合初探
  12. 手机5g什么时候普及_5G牌照发放仨月,5G手机扎堆上市,何时才能真正普及?
  13. MES系统在汽车零部件行业的应用
  14. 新旧版MATLAB中的希尔伯特-黄变换(HHT)及其边际谱的求取问题
  15. 奔驰首秀L4自动驾驶:100万最贵电动车展示最豪华「AI代客泊车」
  16. 普罗米修斯Prometheus手记
  17. 灵动微 MM32 多路ADC-DMA配置
  18. fread和 fgets的区别:
  19. C语言关键字浅析-double
  20. HSG1510轻便式移动工作灯

热门文章

  1. 江苏电信双百兆网是什么
  2. 听人劝,得一半——《程序员羊皮卷》书评(6)
  3. 【web前端】近期题目汇总
  4. Elmedia Player Pro for Mac(万能视频播放器)
  5. android设备信息
  6. VSCode搭建Go开发环境(无墙)
  7. 初涉iOS逆向工程:免越狱修改微信(外观篇)
  8. mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended
  9. 性能优化系列之『DNS :主流的DNS优化方法有哪些?』
  10. potevio身份证阅读 java_普天通信JavaEE开发岗面试题