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

SpannableStringBuilder空格异常:资源字符串空格不显示求助

Android字符串资源中保留冒号后空格的解决方法

Android资源编译器会自动压缩字符串中的连续普通空格,这就是你把空格写在<string>资源里不显示的原因。不用append()的话,有几种可靠的实现方式:

  • 使用Unicode非断空格字符
    直接在资源字符串的冒号后替换成\u00A0(Unicode非断空格),这个字符不会被编译器压缩,能稳定显示:

    <string name="textWithColon" translatable="false">%1$s:\u00A0</string>
    
  • 使用HTML实体&nbsp;
    在资源中用HTML的非断空格实体,注意如果是代码中调用,需要用Html.fromHtml解析:
    资源文件:

    <string name="textWithColon" translatable="false">%1$s:&nbsp;</string>
    

    代码中使用:

    val content = String.format(getString(R.string.textWithColon), "用户名")
    textView.text = Html.fromHtml(content, Html.FROM_HTML_MODE_LEGACY)
    

    如果是直接在布局的android:text中引用,部分场景下无需额外解析也能生效,但保险起见建议配合HTML解析。

  • 用CDATA块包裹内容
    把带空格的字符串放在<![CDATA[]]>中,让编译器原样保留内容,不做空格压缩:

    <string name="textWithColon" translatable="false"><![CDATA[%1$s: ]]></string>
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 15:53:12