SpannableStringBuilder

一般情况下Android中显示文本一般使用TextView,有些时候文本包含一些特殊的字符图片或者同一文本的的样式、颜色不同,例如:

上图共有两个TextView,每个TextView的文本的字体颜色分为两部分,箭头一个颜色,文字一个颜色,这样便无法直接在TextView所在的xml中通过标签设置,这个时候便用到了SpannableStringBuilder了。先看一下这个类的继承关系:

android.text
类 SpannableStringBuilder

java.lang.Object
  继承者 android.text.SpannableStringBuilder
所有已实现的接口:
Editable, GetChars, Spannable, Spanned, Appendable, CharSequence
在它实现的接口中有一个比较的常见CharSequence,TextView.setText的参数就是CharSequence,

因此这里可以直接使用setText方法来设置。下面看一下SpannableStringBuilder的一些方法:

setSpan(Object what, int start, int end, int flags) 
          Mark the specified range of text with the specified object.
第一个参数:what是具体要实现的效果的样式,有好多种常用的有: SubscriptSpan 下标、SuperscriptSpan 上标、URLSpan、UnderlineSpan、ImageSpan、ForegroundColorSpan背景颜色。

start和end是需要使用what样式的文本的位置。

flags是参数系统提供了4个常量,主要是决定了是否包含start、end所在的下标字符

Spanned.SPAN_EXCLUSIVE_EXCLUSIVE ---> 不包含两端start和end所在的端点 
Spanned.SPAN_EXCLUSIVE_INCLUSIVE  ---> 不包含端start,但包含end所在的端点
Spanned.SPAN_INCLUSIVE_EXCLUSIVE  ---> 包含两端start,但不包含end所在的端点
Spanned.SPAN_INCLUSIVE_INCLUSIVE   ---> 包含两端start和end所在的端点 

上面例子中的实现参考代码如下:

static ForegroundColorSpan redSpan = new ForegroundColorSpan(Color.RED);
SpannableStringBuilder builder;
int start = str.indexOf("↑");
builder = new SpannableStringBuilder("↑hhsd");
builder.setSpan(redSpan, start, start + 1,Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值