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

Android字符串文件中用CDATA和<br/>添加连续换行不生效怎么办

为什么CDATA内连续<br/>无法实现多行换行

核心原因和CDATA标签无关,是Android 原生Html.fromHtml() API的解析规则限制:该API默认会将连续的多个<br/>标签判定为冗余内容,自动合并仅保留1个换行效果,这是系统HTML解析器的固有设计,所以你写的连续两个<br/>最终只会生效一个,甚至部分场景下首尾的<br/>会被直接忽略,才会出现你遇到的所有换行挤在一起的情况。

可行的解决方法
  • 方案1:用非换行空格占位,在连续的<br/>中间插入&nbsp;,修改后的字符串资源如下:
<string name="message">
<![CDATA[menu:<br/>&nbsp;<br/>1.One item<br/>2.Two item<br/>&nbsp;<br/>Done]]>
</string>

插入的&nbsp;会被解析为一个空白字符,不会影响显示效果,同时可以阻止解析器合并前后的<br/>标签。

  • 方案2:放弃使用HTML标签换行,直接用原生字符串换行符\n,XML中需要转义为\\n,或者直接在CDATA内输入真实回车换行,解析时不需要调用Html.fromHtml(),直接拿字符串设置给TextView即可,这种方式更稳定,没有解析合并的问题。
  • 方案3:如果需要保留HTML标签的其他能力,也可以在两个<br/>之间插入空的<span></span>标签,同样可以避免被解析器合并。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.09 03:09:04