You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android TextView含K/的Spannable设置Span后异常换行问题求助

三星Android 9设备TextView Spannable文本异常换行问题

问题触发条件

  • Spannable文本包含K/或X/子串,大小写不限制,均会触发问题
  • 子串的两个字符中至少一个设置了ForegroundColorSpan(或其他通用Span),且两个字符不在同一个Span的覆盖范围内

问题表现

/后的所有文本被强制换行;如果K/后紧跟/、.这类符号,这部分符号仍会保留在同一行。

复现环境说明

  • 100%复现设备:搭载Android 9(API 28)的三星J4 Plus
  • 无法复现场景:包含Android 9版本在内的多版本Pixel 5模拟器、其余品牌测试设备均表现正常
  • 已排除干扰项:该问题与TextView宽高设置无关,宽高均设为wrap_content的默认原生TextView也可复现

复现代码

// 构造包含"K/"的字符串
String textString = "1K/2K";

// 构造SpannableString并设置颜色Span
SpannableString spannableString = new SpannableString(textString);
spannableString.setSpan(
                    new ForegroundColorSpan(someColor),
                    0,
                    textString.length(),
                    Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
myMaterialButton.setText(spannableString, TextView.BufferType.SPANNABLE);

原因推测与解决方案

  • 原因推断:该问题和TextView采用的Unicode换行算法异常有关,大概率是三星定制ROM对文本排版逻辑的修改引发的兼容问题
  • 可行解决方案:在/两侧插入零宽词连接器\u2060即可解决异常换行问题

内容的提问来源于stack exchange,提问作者CodingBeing

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 20:27:02