SpannableStringBuilder 笔记

本文介绍了SpannableStringBuilder在富文本处理中的应用,包括关键方法、参数what的使用,以及如何设置字体颜色、背景颜色、大小、样式和下划线等。通过示例展示了如何为字符串设置多种样式,并解释了样式作用范围的参数Spannable.SPAN_常量。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

SpannableStringBuilder 笔记

在学习富文本的过程中发现了这个知识点。SpannableStringBuilder实现了CharSequence接口,用法类似StringBuilder。可以为其包含的字符串设置样式。在设计自定义Label时会很实用。

需要注意的是,虽然其可以直接作为参数放入TextView中,不过由于Canvas并不适配这个类,所以在其中使用这个类等同于使用普通的字符串。

关键方法

  1. void setSpan(Object what, int start, int end, int flags)

  2. SpannableStringBuilder append(CharSequence text, Object what, int flags)

实际上两个方法类似,都需要一个参数whatflags。方法1的剩余参数分别为需要设置的字符起点、终点。这没啥好说的,跟substring的那两个参数一样。方法2就不必说了,现在说说共有的两个参数

what是一个Span类型的参数,用于确定现在的样式。是整个方法的关键。flags参数用于确定样式的作用范围。该参数需求以下四个常量值:

  • Spannable.SPAN_EXCLUSIVE_EXCLUSIVE:仅仅作用于当前选中范围内insert()的字符串
  • Spannable.SPAN_EXCLUSIVE_INCLUSIVE:作用于当前选中字符串之后insert()的字符串
  • Spannable.SPAN_INCLUSIVE_EXCLUSIVE:作用于当前选中的字符串之前insert()的字符串
  • Spannable.SPAN_INCLUSIVE_INCLUSIVE:无论前后都有效

注意,该参数仅对使用insert()方法插入的字符串有效,且插入的位置必须紧贴选中的字符串。否则不会有效果

参数 what

参数what接收一个CharacterStyle的子类。一般常用如下几个实体类

ForegroundColorSpan(字体颜色)

可以接受一个颜色参数,用于改变字体颜色

BackgroundColorSpan(背景颜色)

可以接受一个颜色参数,用于改变背景颜色

AbsoluteSizeSpan(字体大小)

接受一个int参数和一个布尔值,前者为尺寸,后者用于判断单位是否是dip。true为dip,false则为px。该参数默认为false

StyleSpan(字体样式)

接受常量参数,如Typeface.BOLD_ITALIC。用于确定字体样式

UnderlineSpan(下划线)

无参构造器,加下划线

多样式

可以为一组字符串设置多种样式,只需要多次set不同的Span即可。

注意,若set同种样式,后添加的span会覆盖前者

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值