在实际的应用开发过程中常常会遇到。在文本的不同部分显示一些不同的字体风格的信息如:文本的字体、大小、颜色、样式、以及超级链接等。

普通情况下,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, 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 的效果。

应用实例:

因为篇幅限制关于SpannableString的应用实例可參考:Android开发之TextView高级应用在此就不再赘述了。

Android开发之SpannableString具体解释相关推荐

  1. Android开发之TextView高级应用

    Android开发之TextView高级应用 我们平时使用TextView往往让它作为一个显示文字的容器,但TextView的功能并不局限于此.以下就和大家分享一下TextView的一些使用技巧. A ...

  2. android studio输入框下划线,Android开发之TextView的下划线添加

    Android开发之TextView高级应用 Android开发之TextView高级应用 我们平时使用TextView往往让它作为一个显示文字的容器,但TextView的功能并不局限于此.以下就和大 ...

  3. Android开发之旅:组件生命周期(二)

    引言 应用程序组件有一个生命周期--一开始Android实例化他们响应意图,直到结束实例被销毁.在这期间,他们有时候处于激活状态,有时候处于非激活状态:对于活动,对用户有时候可见,有时候不可见.组件生 ...

  4. Android开发之旅:HelloWorld项目的目录结构

    引言 前面Android开发之旅:环境搭建及HelloWorld,我们介绍了如何搭建Android开发环境及简单地建立一个HelloWorld项目,本篇将通过HelloWorld项目来介绍Androi ...

  5. Android开发之仿QQ表情实现(上)

    大家晚上好,,小鹿又来了..最近小鹿特别忙,忙到没时间发表博客了(注:以下内容过于简单请大家不要喷,仅提供初学者学习) 今天发表两篇文章,分别是讲解模拟QQ表情的实现,先给大家看效果图,,,, 开始了 ...

  6. android开发之onCreate( )方法详解

    android开发之onCreate( )方法详解 onCreate( )方法是android应用程序中最常见的方法之一,那么,我们在使用onCreate()方法的时候应该注意哪些问题呢? 先看看Go ...

  7. android开发之Intent.setFlags()_让Android点击通知栏信息后返回正在运行的程序

    android开发之Intent.setFlags()_让Android点击通知栏信息后返回正在运行的程序   在应用里使用了后台服务,并且在通知栏推送了消息,希望点击这个消息回到activity, ...

  8. android之json解析优化,Android开发之json解析

    目前正在尝试着写app,发现看懂代码和能写出来差距很大,最关键的是java基础比较的差,因为只会python,java基础只学习了一个礼拜就过了.感觉java写出来的代码不如python简单明了. 上 ...

  9. android注册弹窗,Android开发之PopupWindow创建弹窗、对话框的方法详解

    本文实例讲述了Android开发之PopupWindow创建弹窗.对话框的方法.分享给大家供大家参考,具体如下: 简介: PopupWindow 可创建类似对话框风格的窗口 效果: 使用方法: 使用P ...

最新文章

  1. 十几年后我才知道,嫁了一个硬核老公
  2. 实现自己的BeanFactory、AOP以及声明式事务
  3. 前端学习(2015)vue之电商管理系统电商系统之实现图片的预览效果
  4. step7设置pcpg_STEP7 PC/PG设置的疑惑
  5. Excel在表格框中插入对勾✅
  6. 拓端tecdat|R语言泰坦尼克号随机森林模型案例数据分析
  7. WebLogic 11gR1修改jdk版本
  8. C# 单例模式(转)
  9. ZUC加密算法实现-软件版本Java
  10. 军犬舆情每日热点:台湾海峡发生6.2级地震;泉州通报碳九泄漏事件处理结果
  11. 计算机中year函数怎么使用,excel2010中YEAR函数的使用方法
  12. [zz]2007年的152条牛人经典BT语录,强烈推荐!
  13. 无线路由器无法在计算机上设置,无线路由器设置管理地址无法打开解决方法
  14. 步进电机加速的c语言编程,关于步进电机S型加速程序编写
  15. 浅析智能驾驶的发展现状和未来趋势
  16. 地铁听书系列之“看破不说破,81个为人处事潜规则”8月圆满收尾20220831
  17. 毕设中自己遇到的那些问题
  18. Http跨站点请求伪造解决方案
  19. 360音乐搜索使用讲解说明
  20. 嵌入式在军工卫星应用手持终端领域的应用

热门文章

  1. 数据结构:堆排序一(heap sort)
  2. 剑指offer五:两个栈实现一个队列
  3. oracle中把函数的执行权限赋个某个用户
  4. spring7: di依赖注入--设值注入
  5. 介绍什么是极限编程?
  6. pip3 install face_recognition
  7. Android Crash战斗日记(一、原理篇)
  8. ASP.NET MVC开发中常见异常及解决方案
  9. 说说JavaScriptCore
  10. arcgis ERROR:000824 该工具未获得许可