记录Android关于使用富文本SpannableStringBuilder的坑
情景1:当改变字体大小与插图一起使用
背景:在业务中遇到动态更改文字大小且需要在文字末尾拼上一个图片时,发现图片总是换到第二行展示,经排查,发现是在重写CharacterStyle#updateDrawState
函数中修改textSize造成的Layout测量问题,导致没有足够的空间来放下图片。
原代码片如下,
SpannableStringBuilder().apply {
append("此处是动态大小的文本 图片占位", object : ClickableSpan() {
override fun onClick(widget: View) {
// 点击事件
}
override fun updateDrawState(ds: TextPaint) {
ds.color = ColorUtils.getColor(R.color.black)
ds.isUnderlineText = false
// 问题的根源:修改了文字的大小
ds.textSize = SizeUtils.dp2px(