首页 技术 正文
技术 2022年11月9日
0 收藏 484 点赞 3,491 浏览 2996 个字

面试题:请说出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

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

 

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,088
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,564
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,412
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,185
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,822
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,905