Android 使用SpannableString显示复合文本
http://blog.csdn.net/feizhixuan46789/article/details/10334441
http://www.th7.cn/Program/Android/201408/258951.shtml
在实际的应用开发过程中经常会遇到,在文本的不同部分显示一些不同的字体风格的信息如:文本的字体、大小、颜色、样式、以及超级链接等。一般情况下,TextView中的文本都是一个样式,对于类似的情况,可以借助SpannableString或SpannableStringBuilder对象来实现以上设置。
SpannableString与SpannableStringBuilder都可以将某段文本设置成一个Span,在Android中,Span表示一段文本的效果,例如,链接形式、图像、带背景的文本等。只是不同的是SpannableStringBuilder可以修改文本的内容。
磨刀不误砍柴工,接下来先让我们熟悉一下SpannableString类。
类结构:
这类文本的内容是不变的,但标记对象可以被附加和分离。可变的文本,请参阅SpannableStringBuilder。类概述:
构造方法:
|
Public Constructors |
|
|
SpannableString(CharSequence source) |
|
常用公有方法:
|
Public Methods |
|
|
final char |
charAt(int i) 返回指定索引位置的字符,第一个字符的索引为0。 |
|
boolean |
equals(Object o) Compares this instance with the specified object and indicates if they are equal. 比较这个实例与指定的对象,如果相等则返回true。 |
|
final void |
getChars(int start, int end, char[] dest, int off) 和String.getChars()方法相似:从指定字符数组中复制字符。start 开始位置,end结束位置,off偏移量。 |
|
int |
getSpanEnd(Object what) 获取what对象在SpannableString对象中的结束位置。如果没有匹配返回-1。 |
|
int |
getSpanStart(Object what) 获取what对象在SpannableString对象中的开始位置。如果没有匹配返回-1。 |
|
final int |
length() 返回此序列中的字符数。 |
|
void |
removeSpan(Object what) 从文本的范围中删除指定的对象。 |
|
void |
setSpan(Object what, int start, int end, int flags) 设置一个Span对象。 what |
说明:
void setSpan(Object what, int start, int end, int flags)
设置一个Span对象。其中第一个参数what:表示一段文本的效果,它可以接受如下属性:
|
属性名 |
说明 |
|
BackgroundColorSpan |
背景色 |
|
ClickableSpan |
文本可点击,有点击事件 |
|
ForegroundColorSpan |
文本颜色(前景色) |
|
MaskFilterSpan |
修饰效果,如模糊(BlurMaskFilter)浮雕(EmbossMaskFilter) |
|
MetricAffectingSpan |
父类,一般不用 |
|
RasterizerSpan |
光栅效果 |
|
StrikethroughSpan |
删除线(中划线) |
|
SuggestionSpan |
相当于占位符 |
|
UnderlineSpan |
下划线 |
|
AbsoluteSizeSpan |
绝对大小(文本字体) |
|
DynamicDrawableSpan |
设置图片,基于文本基线或底部对齐。 |
|
ImageSpan |
图片 |
|
RelativeSizeSpan |
相对大小(文本字体) |
|
ReplacementSpan |
父类,一般不用 |
|
ScaleXSpan |
基于x轴缩放 |
|
StyleSpan |
字体样式:粗体、斜体等 |
|
SubscriptSpan |
下标(数学公式会用到) |
|
SuperscriptSpan |
上标(数学公式会用到) |
|
TextAppearanceSpan |
文本外貌(包括字体、大小、样式和颜色) |
|
TypefaceSpan |
文本字体 |
|
URLSpan |
文本超链接 |
第二个和第三个参数分别表示文本中要设置成Span的某段文本的起始位置和终止位置的下一个字符的位置,也就是start和end。最后一个参数(flags)是一个标志。还可以设置如下几个类似的值:
Spanned.SPAN_EXCLUSIVE_INCLUSIVE:在Span前面输入的字符不应用Span的效果,在后面输入的字符应用Span效果。
Spanned.SPAN_INCLUSIVE_EXCLUSIVE:在Span前面输入的字符应用Span的效果,在后面输入的字符不应用Span效果。
Spanned.SPAN_INCUJSIVE_INCLUSIVE:在Span前后输入的字符都应用Span的效果。
Android 使用SpannableString显示复合文本的更多相关文章
- [置顶] Android EditText/TextView使用SpannableString显示复合文本
在Android中EditText用于编辑文本,TextView用于显示文本,但是有时候我们需要对其中的文本进行样式等方面的设置.Android为我们提供了SpannableString类来对指定文本 ...
- Android(java)学习笔记82:利用SpannableString设置复合文本
1. SpannableString设置复合文本: TextView通常用来显示普通文本,但是有时候需要对其中某些文本进行样式.事件方面的设置.Android系统通过SpannableString类来 ...
- [Android教程]TextView使用SpannableString设置复合文本
TextView通常用来显示普通文本,但是有时候需要对其中某些文本进行样式.事件方面的设置.Android系统通过SpannableString类来对指定文本进行相关处理,具体有以下功能: 1.Bac ...
- Android :TextView使用SpannableString设置复合文本
TextView通常用来显示普通文本,但是有时候需要对其中某些文本进行样式.事件方面的设置.Android系统通过SpannableString类来对指定文本进行相关处理,具体有以下功能: 1.Bac ...
- TextView使用SpannableString设置复合文本(转)
TextView通常用来显示普通文本,但是有时候需要对其中某些文本进行样式.事件方面的设置.Android系统通过SpannableString类来对指定文本进行相关处理,具体有以下功能: 1.Bac ...
- TextView使用SpannableString设置复合文本
TextView通常用来显示普通文本,但是有时候需要对其中某些文本进行样式.事件方面的设置.Android系统通过SpannableString类来对指定文本进行相关处理,具体有以下功能: 1.Bac ...
- android中SpannableString之富文本显示效果
SpannableString其实和String一样,都是一种字符串类型,SpannableString可以直接作为TextView的显示文本,不同的是SpannableString可以通过使用其方法 ...
- Android使用SpannableString设置多样式文本
Android将一行文本设置为多种样式时,可以使用 SpannableString 来实现 private void setTips(){ String big = "大字深色"; ...
- Android笔记(十三) Android中的基本组件——文本
Android中常用的文本组件有 普通文本框(TextView)和编辑框(EditText)两种 EditText是TextView的子类,作用就是在界面上显示文本,区别是EditText允许用户编辑 ...
随机推荐
- poj1201 Intervals【差分约束+SPFA】
转载请注明出处,谢谢:http://www.cnblogs.com/KirisameMarisa/p/4303365.html ---by 墨染之樱花 题目链接:http://poj.org/pr ...
- Java多线程之synchronized(一)
在上节中已经说过了“非线程安全”是如何出现的,链接如下:http://www.cnblogs.com/chentong/p/5650137.html,那么怎么解决“非线程安全”问题呢,只需要在两个线程 ...
- linux命令: patch
一. 针对单文件的patch: 我们以mkprj.sh.1和mkprj.sh两个文件为例: [root@localhost tst]# lsmkprj.sh.1 mkprj.sh 看两个文件的差异: ...
- poj 1430 第二类斯特林数
1 #include <iostream> #include <cmath> #include <algorithm> using namespace std; i ...
- 搜狐畅游:每月给员工直系长辈2000元爱孝薪_企业新闻_265G产业频道
搜狐畅游:每月给员工直系长辈2000元爱孝薪_企业新闻_265G产业频道 搜狐畅游:每月给员工直系长辈2000元爱孝薪
- 淘宝PK京东:哥刷的不是广告,刷的是存在
冯强/文 (昨晚看阿根廷vs瑞士时手机上敲的,看完太激动忘发了,现配了图发上来) 这两天,关于京东.淘宝渠道下沉的新闻中,两家略带喜感的农村墙体广告在互联网上传播,例如以下图: 京东这图片,越看越像P ...
- 【Nginx】启动报错-端口被占用
将下载的windows版nginx的压缩包nginx-1.4.2.zip解压到F:\server\nginx-1.4.2里面. dos命令键入: F: cd F:\server\nginx-1.4.2 ...
- VS 2013--工程的创建,scanf报错,常用快捷键,行号设置
一.创建一个工程(这里是C++,其他的一样的) 在vs页面上点击 文件-->新建-->项目: 会出现如下界面,自己改名字和存贮位置就可以了 确定,然后点击下一步: 这样就建好了一个工程,然 ...
- javascript 学习随笔6
改变html内容 document.getElementById("p1").innerHTML="New text!"; var element=docume ...
- QGraphicsTextItem中的文字对齐
QGraphicsTextItem类可以放到QGraphicsScene或者QGraphicsItem上,用来显示格式化的文本内容,如HTML,当然纯文本也可以显示.如果只是显示纯文本,可以使用QGr ...