SpannableString在多语言中的应用

本文介绍了在Android开发中,如何利用SpannableString处理多语言环境下的文本颜色设定问题。当文本内容可变且需要设置不同颜色时,通过String.format()替换占位符,并动态计算不同语言环境下起始位置,以实现颜色修改的兼容性。
摘要由CSDN通过智能技术生成

在近期的项目中,需要实现多国语言的兼容。而在UI给出的一段文本中,需要设置多个字体颜色的效果,如下:
图一
第一眼看到这个效果,马上就想到了可以用SpannableString来实现部分字体颜色的修改,但是要修改文字字体的颜色,我们必须知道开始修改的起始位置startIndex,和结束的位置endIndex。由于“中国”跟“Heidou”的内容是可变的,一般我们会在string.xml定义如下item:

<string name="spannable_string_test1">我来自%1$s,名字叫做%2$s</string>	

我们会用两个占位符%1$s以及%2$s,然后在我们的代码中使用String.format()来替换我们真正的内容。

val str = String.format(getString(R.string.spannable_string_test1),content1,content2)

我们会很快的就写出了这段代码。但是当我们想要使用SpannableString来实现修改部分文字字体颜色时,会发现,content1以及content2的长度我们是不确定的,content1的长度可能是2、也可能是3或者是4,content1的长度不确定会直接影响到第二个占位符的起始位置startIndex。所以直接写死startIndex和endIndex的值是行不通的,除非能够确保每次content1以及content2的长度都是一样的。
假设content1和content2

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值