有时在开发过程中,我们会有在TextView中添加图片的需求(比如下图箭头所指文字中的表情)。而在xml中对Textview进行属性设置时,只能设置图片在TextView的左、右、上、下四个位置,不能添加到中间的某个位置,这就要求我们在编写代码时动态的进行相关操作了。

这里就给出两种解决方法:

1,使用SpannableString/SpannableStringBuilder;具体使用方法如下:

1),构造String

    SpannableString spanString = new SpannableString("好厉害的魔术啊,小姑娘。。。");

2),构造Span

    Drawable d = getResources().getDrawable(R.drawable.doraemon);   d.setBounds(0, 0, d.getIntrinsicWidth(), d.getIntrinsicHeight()); ImageSpan span = new ImageSpan(d, ImageSpan.ALIGN_BASELINE); 

3),利用SetSpan()对指定范围的String应用这个Span

    spanString.setSpan(span, 6, 7, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);    textView.setText(spanString);

方法一完成,同时要说的是,SpannableString可以用来给字体设置各种效果,例如不同颜色,下划线,粗体/黑体字,背景色等等。

2,使用Html.fromHtml方法来设置图片

/*** 项目资源图片 * @author Susie*/private final class ProImageGetter implements Html.ImageGetter {@Overridepublic Drawable getDrawable(String source) { // 获取到资源id int id = Integer.parseInt(source);Drawable drawable = getResources().getDrawable(id);drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight());return drawable;}}
    String html = "好厉害的魔术" + "<img src=""+R.drawable.doraemon+"">"+",小姑娘。。。"; textView.setText(Html.fromHtml(html, new ProImageGetter(), null));

方法二至此也已完成,此方法主要是通过对Html的ImageGetter参数进行自定义来设置图片的。

其实方法一也好,方法二也好,Drawable的获取既可以来自网络,也可以来自存储空间,或者程序自带,是具体情况而定。

参考资料:1,http://blog.csdn.net/harvic880925/article/details/38984705

2,http://blog.csdn.net/u010418593/article/details/9324101

给TextView设置图片的两种实现方法相关推荐

  1. win10计算机属性管理打不开,win10无法打开设置应用的两种解决方法【图文】

    自从微软发布win10系统后,越来越多小伙伴将自己的电脑升级为新版的win10系统,升级后发现竟然无法打开设置应用,影响正常操作,怎么办?接下去,小编和大家说说两种解决win10无法打开设置应用的方法 ...

  2. django中验证码图片的两种使用方法

    @[T 提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 学习的时候参考过很多篇他人的博客,本篇博客是我第一篇学习笔记 一.方法一使用步骤 1.下载库 2.setting中的 ...

  3. textView代码设置文字居中失效 textView设置文字居中两种方法

    1.TextView的高度占据整个父控件的高度,然后设置TextView的Grayvity Center就可以了. 2.如果第一个方法不行,那么,textView的高度设置为warp_content, ...

  4. 设置背景图片的两种方式,并解决手机端背景图片高度自适应问题

    设置背景图片的两种方式,并解决手机端背景图片高度自适应问题 参考文章: (1)设置背景图片的两种方式,并解决手机端背景图片高度自适应问题 (2)https://www.cnblogs.com/Dark ...

  5. 移动Web开发图片自适应两种常见情况解决方案

    本文主要说的是Web中图片根据手机屏幕大小自适应居中显示,图片自适应两种常见情况解决方案.开始吧 在做配合手机客户端的Web wap页面时,发现文章对图片显示的需求有两种特别重要的情况,一是对于图集, ...

  6. ImGui添加背景图片的两种方式

    给ImGui添加背景图片的两种方式 最近在使用ImGui做客户端程序,想给窗口添加背景图片,但是作者的文档里面好像并没有讲如何添加背景图片,研究了下找到了两种方式. 第一种 创建一个和窗口一样大的Im ...

  7. css如何设置透明度?设置透明度的两种方法(代码实例)

    在前端页面开发布局的时候,为了给用户呈现不同的效果,经常需要设置透明度,那么css是怎样设置透明度的?本章给大家介绍用css设置透明度的两种方法(代码实例).有一定的参考价值,有需要的朋友可以参考一下 ...

  8. word涂改涂掉图片_怎么在word中修改图片的两种方法

    有时我们插入的图片只有一部分是我们想要的,那就需要我们将这一部分裁剪出来,word本身就可以方便快捷的对图片进行裁剪,那么下面就由学习啦小编给大家分享下在word中修改图片的技巧,希望能帮助到您. 在 ...

  9. html中img显示图片的两种常用方式

    html中img显示图片的两种常用方式 显示图片,尤其是二维码的时候,大都是自动生成的,所以就需要能够从后台返回字符串,前台浏览器进行解析.好了,下面是这两种方式. 1. <img src=&q ...

最新文章

  1. 2015年,Web 进入移动时代
  2. Opencv——灰度变换、直方图均衡化
  3. 摄像头上传文件服务器失败,vue打开摄像头拍照并上传至服务器
  4. java 图形化界面 布局管理器
  5. python第二十二课——list函数
  6. css3探测光圈_一款带光圈阴影的纯CSS3 Instagram图标
  7. 「期末」微机原理复习速成(上)
  8. WEB 系统架构演变
  9. TCP长连接和短连接区别
  10. python里面的冒号_python里的冒号
  11. MATLAB之特征值和特征向量
  12. 两台电脑用网线直连如何发送文件?
  13. c3 linearization详解
  14. 【学习笔记】产品经理必备技能之竞品分析(下)用户体验五要素分析法 + 竞品分析报告
  15. 超图平台倾斜摄影发布流程
  16. 基于主从博弈的智能小区电动汽车充电管理及代理商定价策略
  17. 使用Python+OpenCV+FaceNet 实现亚马逊门铃系统上的人脸识别
  18. 双硬盘多系统独立引导(2-Windows xp Win7)
  19. c语言 rpg游戏,浅谈RPG游戏设计(一)
  20. 一抹阳光,几缕思绪...

热门文章

  1. windows10+ubuntu16.04双系统安装教程--UEFI安装方法
  2. 保险科普|人生的7张保单
  3. word论文常用格式设定技巧【公式对齐、制表符公式编号等】
  4. JHipster入门初体验
  5. Python列表排序并得到原来对应的下标
  6. Python实现文件名称批量添加后缀
  7. 手机音量键只能调音量?华为:我这还有7个功能麻烦了解一下
  8. csgo准星设置代码_【玩加】想快速找到适合自己的准星?你想要的,这里都有!...
  9. Python编程从入门到放弃 - 边学边更Part 2项目笔记
  10. 杰理之跳转SD卡升级【篇】