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

Android开发中代码调用string.xml带font标签的字符串资源颜色不生效

问题原因

getString() 方法的设计逻辑是仅返回纯文本内容,会自动剥离字符串中内嵌的HTML样式标签,你用到的<font>颜色标签会被直接过滤,所以拿到的内容没有样式。而在布局XML中直接通过android:text="@string/xxx"引用资源时,系统会自动解析资源中的富文本标签,返回带样式的Spanned类型对象,因此样式可以正常显示。

解决方法

方法1:使用getText()代替getString()(最简便)

getText()方法会直接返回包含原始样式的CharSequence对象,无需额外处理,直接设置给TextView即可:

val textView:TextView = findViewById(R.id.textView)
textView.text = getText(R.string.bullet_text)

方法2:通过HTML解析加载样式

如果有特殊场景需要使用getString(),可以先把string.xml中的字符串用<![CDATA[]]>包裹,避免标签被系统预处理:

<string name="bullet_text"><![CDATA[<font color="#38d98a">●</font>\t\tCucumber Detox Water (1 glass)\n<font color="#38d98a">●</font>\t\tSkimmed Milk (1 glass)\n<font color="#38d98a">●</font>\t\tPeas Poha (1.5 katori)]]></string>

再用HtmlCompat解析字符串后设置给TextView:

import androidx.core.text.HtmlCompat

val textView:TextView = findViewById(R.id.textView)
val htmlContent = getString(R.string.bullet_text)
textView.text = HtmlCompat.fromHtml(htmlContent, HtmlCompat.FROM_HTML_MODE_LEGACY)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 22:27:03