Android TextView里直接显示图片的三种方法
方法一:重写TextView的onDraw方法,也挺直观就是不太好控制显示完图片后再显示字体所占空间的位置关系。一般假设字体是在图片上重叠的推荐这样写。时间关系,这个不付源代码了。
方法二:利用TextView支持部分Html的特性。直接用api赋图片。代码例如以下:
//第一种方法在TextView中显示图片
String html = "<img src='" + R.drawable.circle + "'/>";
ImageGetter imgGetter = new ImageGetter() { @Override
public Drawable getDrawable(String source) {
// TODO Auto-generated method stub
int id = Integer.parseInt(source);
Drawable d = getResources().getDrawable(id);
d.setBounds(0, 0, d.getIntrinsicWidth(), d.getIntrinsicHeight());
return d;
}
};
CharSequence charSequence = Html.fromHtml(html, imgGetter, null);
textView1.setText(charSequence);
textView1.append("您好 ");
注意以下这句话:String html = "<img src='" + R.drawable.circle + "'/>"; img src = 后面除了"之外还有个'号。假设去掉这两个'号就变成了String html = "<img src=" + R.drawable.circle +"/>"; 是会报错的。由于src直接等于了一个数字。是解析不了的。
方法三: 用ImageSpan和SpannableString。代码例如以下:
//第2种方法在TextView中显示图片
Bitmap b = BitmapFactory.decodeResource(getResources(), R.drawable.hanguo);
ImageSpan imgSpan = new ImageSpan(this, b);
SpannableString spanString = new SpannableString("icon");
spanString.setSpan(imgSpan, 0, 4, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
textView2.setText(spanString);
textView2.append("中新网4月27日电 据央视报道,韩国国务总理郑烘原于当地时间27日上午召开公布会,称自己应对韩国“岁月号”沉船事件负责,宣布辞职,并希望家属能原谅及理解他的决定。");
这样的方法是最直观的。通过Bitmap或Drawable对象得到ImageSpan对象。再新建SpannableString对象,设置span的内容就ok了。事实上SpannableString非常强大,如在EditText里将部分文本高亮、下划线、斜体、插入表情都能够用它,详见链接:http://gundumw100.iteye.com/blog/904107
http://blog.csdn.net/rockcoding/article/details/7231756
下为效果图,上下两幅图分别相应另外一种和第三种方法:
Android TextView里直接显示图片的三种方法的更多相关文章
- Qt 显示图片的三种方法
一. 直接用QLabel显示原图 //单独显示的QLabel 其大小为内容即图片的大小,若将QLabel放入QMainWindow中则QLabel的大小为其初始大小. /* QLabel *label ...
- android加载大量图片内存溢出的三种方法
android加载大量图片内存溢出的三种解决办法 方法一: 在从网络或本地加载图片的时候,只加载缩略图. /** * 按照路径加载图片 * @param path 图片资源的存放路径 * @para ...
- python 读取并显示图片的两种方法
在 python 中除了用 opencv,也可以用 matplotlib 和 PIL 这两个库操作图片.本人偏爱 matpoltlib,因为它的语法更像 matlab. 一.matplotlib 1. ...
- python实现读取并显示图片的两种方法
https://www.cnblogs.com/lantingg/p/9259840.html 在 python 中除了用 opencv,也可以用 matplotlib 和 PIL 这两个库操作图片. ...
- 从word中提取图片的三种方法
方法1:使用截图方法来提取并保存图片,如果你安装了QQ并且运行了的话,你可以使用Ctrl+Alt+A来截图,然后在QQ聊天框中按CTRL+V来保存图片,当然你可以在PS新建文档按CTRL+V来粘贴图片 ...
- Android成长之路-实现监听器的三种方法
第一种: 在Test类中 定义一个类接口OnClickListener 第二种:直接在Test类上写一个接口 其中的this相当于new OnClickListener()对象, 即class ...
- markdown 显示图片的三种方式
插入网络图片 插入本地图片 base64 图片(data:image/png;base64,iVBORw0KG........) ps:base64编码的图片可以通过站长工具编码 https://to ...
- python批量下载图片的三种方法
一是用微软提供的扩展库win32com来操作IE: win32com可以获得类似js里面的document对象,但貌似是只读的(文档都没找到). 二是用selenium的webdriver: sele ...
- Android设置布局背景为白色的三种方法
一.在xml文件里可以直接设置: android:background="#ffffff" 其他颜色可以看这里;http://blog.csdn.net/yanzi1225627/ ...
随机推荐
- java web从零单排第十六期《struts2》控制标签(2)
1.s:subset标签概述: s:subset标签功能是从一个集合中取出部分元素合并成一个新的集合,新生成的这个集合是原来集合的子集.属性和意义如下: 属性名 是否必需 默认值 类型 说明介绍 co ...
- wake_lock_timeout的用法
今天实用到用ec43_GPIO的中断来唤醒系统,将系统从深度休眠中唤醒并保证系统wakup 一段时间用过了.方法例如以下.有相同使用的童鞋能够參考一下. 1. 定义一人局部静态变量ec43_wlo ...
- Flume+LOG4J+Kafka
基于Flume+LOG4J+Kafka的日志采集架构方案 本文将会介绍如何使用 Flume.log4j.Kafka进行规范的日志采集. Flume 基本概念 Flume是一个完善.强大的日志采集工具, ...
- 《转》在win7,boa-constructor 0.6.1 的palette面板中没有控件图标的解决方法
原地址:http://blog.csdn.net/rickleo/article/details/6532595 在win7-64bit环境下,boa-constructor 0.6.1 的palet ...
- Mysql rr和rc隔离
REPEATABLE READ This is the default isolation level for InnoDB. For consistent reads, there is an im ...
- Maven聚合
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2 ...
- 结合使用AngularJS和Django
原地址 好吧,我承认自己很懒,时间又不够用. 翻译的几个文章都是虎头蛇尾,但我保证这次肯定不太监. 关键的单词不翻译,实在觉得翻译成汉语很别扭,括号里是参考翻译. 有问题和建议尽管提出来,我会改进完善 ...
- 修改emlog后台登录路径的方法(转)
emlog后台登录地址的目录名称默认为admin,并且官方没有提供自定义后台登录入口名字的功能,这多少让我们觉得有些不安全,毕竟暴露一个网站的后台不是一件安全的事,今天就给您说下修改方法,增加一下网站 ...
- Linux 内核升级步骤
1.解压内核文件包#xz -d linux-3.2.63.tar.xz #tar xvf linux-3.2.63.tar 2.拷贝解压文件到/usr/src#cp -r linux-3.2.63 / ...
- https原理及tomcat配置https方法
一. 什么是HTTPS 在说HTTPS之前先说说什么是HTTP,HTTP就是我们平时浏览网页时候使用的一种协议.HTTP协议传输的数据都是未加密的,也就是明文的,因此使用HTTP协议传输隐私信息非常不 ...