众所周知, JetpackCompose 中的AnnotatedString提供了Android 的 SpannedString 的一些 API 。
但我没有找到将ImageSpan内联到文本的任何方法/解决方法(使用 AndroidView 除外)
众所周知, JetpackCompose 中的AnnotatedString提供了Android 的 SpannedString 的一些 API 。
但我没有找到将ImageSpan内联到文本的任何方法/解决方法(使用 AndroidView 除外)
可以使用Composable的AnnotatedString
和inlineContent
参数将图像放入文本中。Text
buildAnnotatedString { ... }
,我们需要为我们的内联内容定义一些id使用appendInlineContent(id = ...)
Text
Composable in参数中,我们提供了一个将此id与对象inlineContent
匹配的映射。InlineTextContent()
只要您可以预先定义其大小,您基本上可以将任何内容放在那里Placeholder
。
val annotatedString = buildAnnotatedString {
append("This is text ")
appendInlineContent(id = "imageId")
append(" with a call icon")
}
val inlineContentMap = mapOf(
"imageId" to InlineTextContent(
Placeholder(20.sp, 20.sp, PlaceholderVerticalAlign.TextCenter)
) {
Image(
imageVector = Icons.Default.Call,
modifier = Modifier.fillMaxSize(),
contentDescription = ""
)
}
)
Text(annotatedString, inlineContent = inlineContentMap)