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 ...
随机推荐
- [React] Use a Render Porp
More detail check LInk. Render Prop vs HOC: HOC version for withMouse: import React from 'react' imp ...
- Exclusive or
题目连接 题意: 每次给一个n.求 (2≤n<10500) 分析: 先说一下自己的想法,假设将n换成二进制数,也就一两千位左右,那么一位一位处理是能够接受的. 将0-n写成二进制形式后,显然全部 ...
- 取消cp命令别名
1. 取消cp命令别名unalias cpcp -rf恢复别名alias cp='cp -i'2.关闭当前用户下的cp别名配置sed -i "s/alias cp='cp -i'/#alia ...
- checkbox-padding 调整checkbox字体跟图标距离
有时候我们会遇到需要调整控件中的内容相对于容器的位置.这里有两种情况 1.linearlayout这样的容器中,包含button类的控件,这时候margin可以调节 2.textview中的文字内容 ...
- Vue路由query传参
1.不要进行过深的嵌套 let id = 'uyu' this.$router.push({ path: '/mrp_detail', query: { re_order_id: id, option ...
- JS实践与写博客-序
大二的时候,就开始接触JavaScript了. 当时学了1年多,主要是认真看了一本JavaScript的入门书籍,了解了JavaScript大致怎么回事.在独自做Web项目的时候,用的都是JavaSc ...
- 转换PHP脚本成为windows的执行程序
转换PHP脚本成为windows的执行程序 Convert a PHP script into a stand-alone windows executable I want to automate ...
- setInterval()第一个参数带引号和不带引号的区别
setInterval()第一个参数带引号和不带引号的区别:关于定时函数setInterval()的基本用法这里就不做介绍了,查阅相关教程即可,这里主要介绍一下setInterval()函数的第一个参 ...
- 【2017中国大学生程序设计竞赛 - 网络选拔赛 hdu 6150】Vertex Cover
[链接]点击打开链接 [题意] 有人写了一个最小点覆盖的贪心算法,然后,让你去hack它. 并且,要求这个算法得到的错误答案,是正确答案的三倍. 让你任意输出hack数据,点数<=500 [题解 ...
- Redfield Water Ripples 2.02(水波滤镜中文绿色版-支持CC)
Redfield Water Ripples 能够用于设计具有高度现实主义风格的水波纹特效,它提供了诸多属性选项,其 3D 渲染品质另人映像深刻.此滤镜很易用,其随机设定生成器可创建差点儿无限的水波纹 ...