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

Jetpack Compose 如何实现字符串资源占位符内容单独加粗

Android字符串占位符加粗样式实现方案

共有两种常用的稳定实现方式:

方案1:使用Html类解析富文本

无需修改原有字符串资源定义,直接在代码中拼接样式标签后解析即可:

  • 原有字符串资源保持不变:
<string name="my_string">Fancy string with an %1$s placeholder</string>

如果存在HTML标签自动转义的问题,可给字符串套上CDATA包裹:

<string name="my_string"><![CDATA[Fancy string with an %1$s placeholder]]></string>
  • 代码实现逻辑:
// Kotlin 示例
val placeholder = "<strong>amazing</strong>"
val rawContent = getString(R.string.my_string, placeholder)
// Android 7.0及以上需指定解析flag
val styledContent = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
    Html.fromHtml(rawContent, Html.FROM_HTML_MODE_LEGACY)
} else {
    Html.fromHtml(rawContent)
}
// 直接设置到文本控件即可
textView.text = styledContent
// Java 示例
String placeholder = "<strong>amazing</strong>";
String rawContent = getString(R.string.my_string, placeholder);
CharSequence styledContent;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
    styledContent = Html.fromHtml(rawContent, Html.FROM_HTML_MODE_LEGACY);
} else {
    styledContent = Html.fromHtml(rawContent);
}
textView.setText(styledContent);

方案2:使用Spannable手动设置样式(性能更优)

不需要解析HTML,直接对原生字符串设置Span样式,开销更低:

// Kotlin 示例
val placeholder = "amazing"
val fullContent = getString(R.string.my_string, placeholder)
val spannable = SpannableString(fullContent)
// 定位需要加粗的占位符文本区间
val boldStart = fullContent.indexOf(placeholder)
val boldEnd = boldStart + placeholder.length
// 设置粗体样式
spannable.setSpan(
    StyleSpan(Typeface.BOLD),
    boldStart,
    boldEnd,
    Spannable.SPAN_EXCLUSIVE_EXCLUSIVE
)
textView.text = spannable
// Java 示例
String placeholder = "amazing";
String fullContent = getString(R.string.my_string, placeholder);
SpannableString spannable = new SpannableString(fullContent);
int boldStart = fullContent.indexOf(placeholder);
int boldEnd = boldStart + placeholder.length();
spannable.setSpan(
    new StyleSpan(Typeface.BOLD),
    boldStart,
    boldEnd,
    Spannable.SPAN_EXCLUSIVE_EXCLUSIVE
);
textView.setText(spannable);

内容的提问来源于stack exchange,提问作者Nicola De Fiorenze

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 13:15:04