Android Studio Kotlin:TextView部分文本<font>标签变色无效求助
解决TextView中HTML标签不生效的问题
你的问题出在TextView默认会把字符串当作纯文本渲染,不会自动解析HTML标签,所以<font>标签被直接显示出来,没有起到变色作用。按以下步骤修改即可解决:
1. 规范HTML字符串格式(可选但推荐)
把color属性值用双引号包裹,避免解析异常:
var text = "Take <font color=\"red\">(" + medpill + ")</font> pill every "
2. 在设置TextView文本时解析HTML
不要直接把字符串赋值给TextView,而是用Html类解析后再设置。根据Android版本做兼容:
假设你原本的代码是这样设置文本的:
textView.text = medication.text
修改为:
val htmlContent = medication.text if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { textView.text = Html.fromHtml(htmlContent, Html.FROM_HTML_MODE_LEGACY) } else { textView.text = Html.fromHtml(htmlContent) }
如果使用DataBinding,可以在布局里直接写表达式处理:
<TextView ... android:text="@{Build.VERSION.SDK_INT >= Build.VERSION_CODES.N ? Html.fromHtml(medication.text, Html.FROM_HTML_MODE_LEGACY) : Html.fromHtml(medication.text)}" />
补充说明
- 数据层尽量保持原始的HTML字符串,把渲染逻辑放在展示层(比如Adapter或Activity/Fragment),这样更符合分层设计。
- Android的
Html类只支持有限的HTML标签,如果需要更复杂的样式,可以考虑使用SpannableString实现。
内容的提问来源于stack exchange,提问作者Robert
相关产品推荐
相关产品推荐

