博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
我的Android进阶之旅------> Android在TextView中显示图片方法
阅读量:6946 次
发布时间:2019-06-27

本文共 2801 字,大约阅读时间需要 9 分钟。

面试题:请说出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组件中显示图像

@Override	protected void onCreate(Bundle savedInstanceState) {		super.onCreate(savedInstanceState);		setContentView(R.layout.oyp);		TextView  myTextView=(TextView) findViewById(R.id.myTextView);		String html = "";		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 ");	}

注意下面这句话:

String html = "<img src='" + R.drawable.circle + "'/>"; 

img src = 后面除了"之外还有个'号。如果去掉这两个'号就变成了String html = "<img src=" + R.drawable.circle +"/>"; 是会报错的,因为src直接等于了一个数字,是解析不了的。

方法三:使用ImageSpan对象在TextView组件中显示图像

@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 ");	}

PS:可以参考以下链接,加深理解

(地址:)

 

 

 

                           
====================================================================================

  作者:欧阳鹏  欢迎转载,与人分享是进步的源泉!

  转载请保留原文地址

====================================================================================

 

转载于:https://www.cnblogs.com/ouyangpeng/p/8538044.html

你可能感兴趣的文章
[UML]UML系列——状态机图statechart diagram
查看>>
微信公众平台开发(74) 用户分组管理
查看>>
二、jdk命令之javah命令(C Header and Stub File Generator)
查看>>
ios模拟器未能安装此应用程序
查看>>
站长常用的200个js代码 站长常用js代码大全 站长常用js代码集合
查看>>
HBase eclipse开发环境搭建
查看>>
SQL Server - 把星期一(周一)当作每个星期的开始在一年中求取周数
查看>>
jquery-alert对话框
查看>>
WIN8系统安装软件时提示"扩展属性不一致"的解决方法
查看>>
sqlite3.exe 使用
查看>>
CAD中批量打印
查看>>
蛋疼的Apple IOS Push通知协议
查看>>
MyEclipse10.0 安装 jbpm4.4
查看>>
批处理复制文件(文件夹)排除某目录,某些类型(草稿)
查看>>
【转】shell 编程:冒号 后面跟 等号,加号,减号,问号的意义
查看>>
C#编写COM组件
查看>>
[OpenSource]浅谈.Net和Java互相调用的三种方式
查看>>
C语言指针的初始化和赋值
查看>>
安卓开发笔记——关于照片墙的实现(完美缓存策略LruCache+DiskLruCache)
查看>>
定义和使用EL函数
查看>>