【发布时间】:2021-11-09 16:57:54
【问题描述】:
我有这样的字符串资源
<string name="my_string">Fancy string with an %1$s placeholder</string>
我想将其作为输出:“带有 amazing 占位符的花式字符串”。占位符内容为粗体的字符串。
我怎样才能得到想要的输出?
【问题讨论】:
标签: android android-jetpack-compose
我有这样的字符串资源
<string name="my_string">Fancy string with an %1$s placeholder</string>
我想将其作为输出:“带有 amazing 占位符的花式字符串”。占位符内容为粗体的字符串。
我怎样才能得到想要的输出?
【问题讨论】:
标签: android android-jetpack-compose
最后我得到了想要的结果
val placeholder = "Amazing"
val globalText = stringResource(id = R.string.my_string, placeholder)
val start = globalText.indexOf(placeholder)
val spanStyles = listOf(
AnnotatedString.Range(SpanStyle(fontWeight = FontWeight.Bold),
start = start,
end = start + placeholder.length
)
)
Text(text = AnnotatedString(text = globalText, spanStyles = spanStyles))
【讨论】:
假设您在 Text composable 中显示此内容,请执行此操作。确保在 $ 字符之前包含反斜杠:
Row(modifier = Modifier.wrapContentWidth()) {
val s = LocalContext.current.getString(R.string.my_string)
val p = s.indexOf("%1\$s")
Text(s.substring(0, p))
Text("amazing", fontWeight = FontWeight.Bold)
Text(s.substring(p + 4))
}
【讨论】: