Android构建时mergeDebugResources任务出现Failed to flatten XML错误如何解决
问题产生原因
- 你在字符串资源中额外添加了多余的
<Data>标签,Android资源编译器处理strings.xml时,不需要用<Data>标签包裹CDATA内容,多余的标签会让编译器识别文本样式结构时判定存在未闭合的标签,直接触发Attempting to flatten xml with unfinished spans报错。 - 另外注意报错指向的是名为
activity_cancel_membership_limit1000的字符串资源,你贴出的是activity_cancel的代码,需要确认目标字符串是否也存在标签未闭合、CDATA书写不规范的同类问题。
修复方案
- 首先定位到strings.xml第831行对应的
activity_cancel_membership_limit1000资源,检查所有HTML标签是否完全闭合,CDATA块格式是否正确。 - 删除所有字符串资源中多余的
<Data>标签,带HTML样式的字符串正确写法参考如下:
<string name="activity_cancel"><![CDATA[Press to<font color='#D13F57'> Cancel</font>]]></string>
- 如果要在页面中加载带样式的字符串,需要用
Html.fromHtml解析后再赋值给控件,示例代码如下:
// Kotlin 实现 val styleText = Html.fromHtml(getString(R.string.activity_cancel), Html.FROM_HTML_MODE_COMPACT) targetTextView.text = styleText
// Java 实现 String styleText = Html.fromHtml(getString(R.string.activity_cancel), Html.FROM_HTML_MODE_COMPACT); targetTextView.setText(styleText);
内容的提问来源于stack exchange,提问作者Hai Hack
相关产品推荐
相关产品推荐

