Android开发之SpannableString具体解释
在实际的应用开发过程中常常会遇到。在文本的不同部分显示一些不同的字体风格的信息如:文本的字体、大小、颜色、样式、以及超级链接等。
普通情况下,TextView中的文本都是一个样式。对于类似的情况。能够借助SpannableString或SpannableStringBuilder对象来实现以上设置。
SpannableString与SpannableStringBuilder都能够将某段文本设置成一个Span,在Android中。Span表示一段文本的效果,比如,链接形式、图像、带背景的文本等。仅仅是不同的是SpannableStringBuilder能够改动文本的内容。
磨刀不误砍柴工,接下来先让我们熟悉一下SpannableString类。
类结构:
extends Object
implements GetChars Spannable CharSequence
|
java.lang.Object |
|
|
↳ |
android.text.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, 设置一个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 的效果。
应用实例:
因为篇幅限制关于SpannableString的应用实例可參考:Android开发之TextView高级应用在此就不再赘述了。
Android开发之SpannableString具体解释的更多相关文章
- Android开发之WebView具体解释
概述: 一个显示网页的视图.这个类是你能够滚动自己的Web浏览器或在你的Activity中简单地显示一些在线内容的基础.它使用了WebKit渲染引擎来显示网页,包含向前和向后导航的方法(通过历史记录) ...
- Android开发之AlarmManager具体解释
AlarmManager实质是一个全局的定时器,是Android中经常使用的一种系统级别的提示服务,在指定时间或周期性启动其他组件(包含Activity,Service,BroadcastReceiv ...
- Android开发之TextView高级应用
Android开发之TextView高级应用 我们平时使用TextView往往让它作为一个显示文字的容器,但TextView的功能并不局限于此.以下就和大家分享一下TextView的一些使用技巧. A ...
- Android开发之InstanceState详解
Android开发之InstanceState详解 本文介绍Android中关于Activity的两个神秘方法:onSaveInstanceState() 和 onRestoreInstanceS ...
- 【Android UI】Android开发之View的几种布局方式及实践
引言 通过前面两篇: Android 开发之旅:又见Hello World! Android 开发之旅:深入分析布局文件&又是“Hello World!” 我们对Android应用程序运行原理 ...
- Android开发之InstanceState详解(转)---利用其保存Activity状态
Android开发之InstanceState详解 本文介绍Android中关于Activity的两个神秘方法:onSaveInstanceState() 和 onRestoreInstanceS ...
- Android开发之旅2:HelloWorld项目的目录结构
引言 前面Android开发之旅:环境搭建及HelloWorld,我们介绍了如何搭建Android开发环境及简单地建立一个HelloWorld项目,本篇将通过HelloWorld项目来介绍Androi ...
- Android开发之Java集合类性能分析
对于Android开发者来说深入了解Java的集合类很有必要主要是从Collection和Map接口衍生出来的,目前主要提供了List.Set和 Map这三大类的集合,今天Android吧(ard8. ...
- Android开发之Git配置
Android开发之Git配置 1.首先git配置: 输入命令: git config --global user.name "xxx.xx" git config --globa ...
随机推荐
- Android实战简易教程-第二十五枪(基于Baas的数据表查询下拉刷新和上拉载入实现!)
上一节我们实现了数据表的载入,可是,当数据表数据非常多时.我们就要考虑数据的分页.这里我们选用了PullToRefreshListView控件,先看一下该控件的说明: 效果图: ...
- JQuery之为某个div加入行样式
JQuery都是以$符号开头的.当然能够用jQuery取代$符号,他们是恒等的,同一时候也是相等的.()事实上就是一个方法,里面能够传递匿名函数等,选取某个div时,如id为div1则用$('#div ...
- Asp中JSON的使用
我对asp全然不懂,因为须要使用json的结构,就研究了一下asp的json的使用,拼接一个json的字符串. 測试用例中使用到了一个lib文件: Json_2.0.3.asp <% ' ' V ...
- Mahout应用
不多说,直接上干货! Mahout作为Apache基金会的顶级项目之一,Mahout的应用也极其广泛,一般分为商业应用和学术应用. 在商业应用中,Adobe AMP公司使用Mahout的聚类算法把用户 ...
- 用Navicat连接MySQL数据库出现1251错误:密码方式错误
原因:因为MySQL8.0是最新版密码保存方式,而图形化数据库管理工具还是原先的密码保存方式. 解决方式: 用CMD命令号方式进入MySQL use mysql: ALTER USER 'root'@ ...
- web存储方法,现成代码
1.cookie的设置与取用 function setCookie(cname,cvalue,exdays){ var d = new Date(); d.setTime(d.getTime()+(e ...
- 自绘listCtrl控件选中该行高亮(模拟windows)
CListCtrl的派生类CMyListCtrl的DrawItem()函数里添加代码 CDC *pDC = CDC::FromHandle(lpDrawItemStruct->hDC); if ...
- [React] Call setState with null to Avoid Triggering an Update in React 16
Sometimes it’s desired to decide within an updater function if an update to re-render should be trig ...
- svd 奇异值分解
参考:http://www.cnblogs.com/pinard/p/6251584.html 酉矩阵,关于矩阵的问题,还是很复杂的. 只有方阵才可以进行特征值分解, 但是如果行不等于列,即不是方阵, ...
- Nginx分发服务
nginx配置分发tomcat服务 http://blog.csdn.net/yan_chou/article/details/53265775 http://www.cnblogs.com/deng ...