我的Android进阶之旅------> Android在TextView中显示图片方法
面试题:请说出Android SDK支持哪些方式显示富文本信息(不同颜色、大小、并包含图像的文本信息),并简要说明实现方法。
答案:Android SDK支持如下显示富文本信息的方式。
1、使用TextView组件可以显示富文本信息。在TextView组件中可以使用富文本标签来显示富文本信息,这种标签类似于HTML标签,但比HTML标签简单,支持有限的几种显示富文本的方式。如<font>标签用于设置字体和颜色,<b>用于设置粗体。包含这些标签的文本不能直接作为TextView.setText方法的参数值,而要先使用Html.fromHtml方法将这些文本转换成CharSequnce对象,然后再将对象作为TextView.setText方法的参数值。
2、使用WebView组件显示HTML页面。
3、继承View类或其子类,并覆盖onDraw方法,在该方法中直接绘制文本或图像。
上面3种方法都支持图文混排效果。但第1种方法在显示图像时(使用<img>标签)需要实现ImageGetter接口,并通过ImageGetter.getDrawable方法返回封装图像资源的Drawable对象。
在TextView组件中显示图像还可以使用ImageSpan对象,ImageSpan对象用于封装Bitmap对象,并通过SpannableString对象封装ImageSpan对象,最后
将SpannableString对象作为TextView.setText方法的参数值将图像显示在TextView组件上。
==================================================================================================
Android在TextView中显示图片方法
方法一:重写TextView的onDraw方法,也挺直观就是不太好控制显示完图片后再显示字体所占空间的位置关系。一般如果字体是在图片上重叠的推荐这样写。时间关系,这个不付源码了。
方法二:使用<img>标签在TextView组件中显示图像
<span style="background-color: rgb(255, 255, 255);">@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.oyp);
TextView myTextView=(TextView) findViewById(R.id.myTextView);
String html = "<img src='" + R.drawable.ic_launcher + "'/>";
ImageGetter imgGetter = new ImageGetter() {
@Override
public Drawable getDrawable(String source) {
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);
myTextView.setText(charSequence);
myTextView.append("欧阳鹏 http://blog.csdn.net/ouyang_peng ");
}</span>
注意下面这句话:
String html = "<img src='" + R.drawable.circle + "'/>";
img src = 后面除了"之外还有个'号。如果去掉这两个'号就变成了String html = "<img src=" + R.drawable.circle
+"/>"; 是会报错的,因为src直接等于了一个数字,是解析不了的。
方法三:使用ImageSpan对象在TextView组件中显示图像
<span style="background-color: rgb(255, 255, 255);">@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.oyp);
TextView myTextView=(TextView) findViewById(R.id.myTextView);
//根据资源ID获取资源图像的Bitmap
Bitmap bitmap=BitmapFactory.decodeResource(getResources(), R.drawable.icon);
//根据Bitmap对象创建ImageSpan对象
ImageSpan imageSpan=new ImageSpan(this,bitmap);
//创建一个SpannableString对象,以便插入用ImageSpan对象封装的图像
SpannableString spannableString=new SpannableString("icon");
//用ImageSpan对象替换icon
spannableString.setSpan(imageSpan, 0, 4, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
//将图像显示在TextView组件上
myTextView.setText(spannableString);
myTextView.append("欧阳鹏 http://blog.csdn.net/ouyang_peng ");
}</span>
PS:可以参考以下链接,加深理解
我的Android进阶之旅------>
Android为TextView组件中显示的文本添加背景色
(地址:http://blog.csdn.net/ouyang_peng/article/details/46918379)
http://blog.csdn.net/yanzi1225627/article/details/24590029
http://www.linuxidc.com/Linux/2012-05/59803.htm
====================================================================================
作者:欧阳鹏 欢迎转载,与人分享是进步的源泉!
转载请保留原文地址:http://blog.csdn.net/ouyang_peng
====================================================================================
我的Android进阶之旅------> Android在TextView中显示图片方法的更多相关文章
- 我的Android进阶之旅------> Android在TextView中显示图片方法
面试题:请说出Android SDK支持哪些方式显示富文本信息(不同颜色.大小.并包括图像的文本信息).并简要说明实现方法. 答案:Android SDK支持例如以下显示富文本信息的方式. 1.使用T ...
- 我的Android进阶之旅------> Android为TextView组件中显示的文本加入背景色
通过上一篇文章 我的Android进阶之旅------> Android在TextView中显示图片方法 (地址:http://blog.csdn.net/ouyang_peng/article ...
- 我的Android进阶之旅------>关于android:layout_weight属性的详细解析
关于androidlayout_weight属性的详细解析 效果一 效果二 图3的布局代码 图4的布局代码 效果三 图7代码 图8代码 效果四 效果五 版权声明:本文为[欧阳鹏]原创文章,欢迎转载,转 ...
- 我的Android进阶之旅------>关于android:layout_weight属性的一个面试题
最近碰到一个面试题,按照下图,由Button和EditText组成的界面下厨布局代码,解决这题目需要使用android:layout_weight的知识. 首先分析上图所示的界面可以看成一下3个部分. ...
- 我的Android进阶之旅------>Android字符串资源中的单引號问题error: Apostrophe not preceded by 的解决的方法
刚刚在string字符串资源文件里,写了一个单引號.报错了,错误代码例如以下 error: Apostrophe not preceded by \ (in OuyangPeng's blog ) 资 ...
- 我的Android进阶之旅------>Android 关于arm64-v8a、armeabi-v7a、armeabi、x86下的so文件兼容问题
Android 设备的CPU类型通常称为ABIs 问题描写叙述 解决方法 1解决之前的截图 2解决后的截图 3解决方法 4建议 为什么你须要重点关注so文件 App中可能出错的地方 其它地方也可能出错 ...
- 我的Android进阶之旅------>Android系统设置默认来电铃声、闹钟铃声、通知铃声
首先了解Android系统本身提供的默认铃声文件,这些文件都放在 /system/media/audio 文件夹下. /system/media/audio/ringtones 系统来电铃声 ...
- 【我的Android进阶之旅】Android 混淆文件资源分类整理
之前将所有的混淆都配置在一个 proguard-rules.pro 这个Android Studio新建项目时自动生成的文件里面,而随着项目功能迭代越来越多,代码量越来越多,引用的第二方库.第三方库都 ...
- 我的Android进阶之旅------>Android实现音乐示波器、均衡器、重低音和音场功能
本实例来自于<疯狂Android讲义>.要实现详细的功能,须要了解下面API: MediaPlayer 媒体播放器 Visualizer 频谱 Equalizer 均衡器 BassBoo ...
随机推荐
- java int转String全部方式的效率对照与深入解析
在java中,大家肯定都会遇到int类型转String类型的情形,知其然知其所以然.总结加分析一下,int类型转String类型有下面几种方式: a+"" String.value ...
- 13.1Springboot 之 静态资源路径配置
Spring 静态资源路径是指系统可以直接访问的路径,且路径下的所有文件均可被用户直接读取. 在Springboot中默认的静态资源路径有:classpath:/META-INF/resources/ ...
- Node.js node主文件找不到时报出的Error:Cannot find module异常
如果执行>Node xx.js时,xx,js找不到的话,报出的错误是Error:Cannot find module 'c:/test/xx,js' 主文件名打错或者是点号打成逗号都会出这样的错 ...
- Android控件常见属性
1.宽/高android:layout_width android:layout_height// 取值match_parent //匹配父控件wrap_content //自适应,根据内容 如果指定 ...
- 仿IOS中下拉刷新的“雨滴”效果
在IOS中,有非常赞的"水滴"下拉效果.非常久之前也想在Android上实现,可是苦于能力有限,一直未能付诸行动.这几天趁着空隙时间.写了一版初步实现,基本达到了"水滴& ...
- 我们常用的在a标签中有点击事件
我们常用的在a标签中有点击事件:1. a href="javascript:js_method();" 这是我们平台上常用的方法,但是这种方法在传递this等参数的时候很容易出问题 ...
- matlab 常用函数汇总
1. 特殊变量与常数 主题词 意义 主题词 意义 ans 计算结果的变量名 computer 确定运行的计算机 eps 浮点相对精度 Inf 无穷大 I 虚数单位 inputname 输入参数名 Na ...
- MyReport报表引擎2.7.8.8公布
支持嵌套子报表直接编辑保存,多个子报表同一时候存储在一个报表格式文件中,设计更简便,避免了嵌套报表的多个报表格式载入. watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5 ...
- appium 学习和环境搭建
官方网站: http://appium.io/ 1.安装各大开发环境:Nodejs. python .java 和 android 环境,并且配置环境变量. ✔ The Node.js binary ...
- 【Hadoop基础教程】1、Hadoop之服务器基础环境搭建(转)
本blog以K-Master服务器基础环境配置为例分别演示用户配置.sudo权限配置.网路配置.关闭防火墙.安装JDK工具等.用户需参照以下步骤完成KVMSlave1~KVMSlave3服务器的基础环 ...