Android 同一个TextView中多彩显示文字

本文介绍了如何在Android中使用SpannableString实现同一TextView内显示不同颜色的文字,避免了使用多个TextView的繁琐。文章详细讲解了String、StringBuffer、StringBuilder的区别,强调了String的不可变性,并给出了性能比较和使用场景建议。接着,重点讨论了SpannableString及其相关类,包括Span样式类的使用和setSpan()方法的四个参数解析,帮助开发者更好地理解和应用。

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

写在前面

最近,在公司的项目中需要将一段文字分别涂上两种不同的颜色,最笨重的解决办法就是用多个TextView相互进行拼接显示,但是不光让业务逻辑变得繁杂,也让代码可靠性降低,因此本文介绍两种可以实现在同一个TextView下展示不同色彩的方法,如下图所示:
图1 TextView示意图

其中涉及到的是SpannableString等相关的类知识,当然String是一个既基础也复杂的对象类,所以在文章开头会阐述String、StringBuffer和StringBuilder的应用对比,话不多说,开始吧。

String、StringBuffer、StringBuilder

在Java和Android中,对于字符串来说常用的除了String以外,还有StringBuffer和StringBuilder这两种,这也是校招必备的知识要点之一,所以先用一张表来谈谈这三者的区别:

名字 说明 线程安全
String 不可变序列
StringBuffer 可变序列 安全
StringBuilder 可变序列 非线程安全

由此可见,三者最大的不同点主要在于两个方面,一个是否可变序列、另一个则关乎于是否为线程安全,什么叫不可变序列呢?看下列代码:

   String str = "hello ";
        String str1 = str + "word";
        if (str == str1) {
            Log.d(TAG, "str与str1为同一对象:" + true);
        } else {
            Log.d(TAG, "str与str1为同一对象:" + fa
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值