4

我有一个包含 html 的字符串,如何在 Jetpack 组合文本中显示它?

在 TextView 中,我会使用 Spanned 并执行以下操作:

TextView.setText(Html.fromHtml("<p>something", HtmlCompat.FROM_HTML_MODE_LEGACY)

如何使用 Jetpack compose 中的文本执行此操作?

4

3 回答 3

2

与 Yhondri 相同的答案,但如果您的目标是 api >24,则使用 HtmlCompat:

@Composable
fun Html(text: String) {
    AndroidView(factory = { context ->
        TextView(context).apply {
            setText(HtmlCompat.fromHtml(text, HtmlCompat.FROM_HTML_MODE_LEGACY))
        }
    })
}
于 2021-08-16T09:23:34.347 回答
1

您可以将旧的 TextView 集成到您的 Jetpack 组合中,如下所示:

AndroidView(factory = { context ->
                    TextView(context).apply {
                        text = Html.fromHtml(your_html)
                    }
                })

更多信息:https ://foso.github.io/Jetpack-Compose-Playground/viewinterop/androidview/

于 2021-07-05T20:16:46.200 回答
1

不幸的是,Jetpack compose 还不支持 HTML...

所以,你可以做的是:

选项 1:创建自己的 HTML 解析器

Jetpack compose 支持基本样式,例如粗体、颜色、字体等。因此,您可以循环遍历原始 HTML 文本并手动应用文本样式。

选项 2:将旧的集成TextView到您的 Jetpack 组合中。

请阅读:在您的应用中采用 Compose

谢谢。

于 2021-06-22T16:55:00.840 回答