我有一个 Edittext(使用视图绑定的 binding.text),其中包含使用 StyleSpan 设置样式的文本,即粗体和斜体。为了保存格式化的文本,我在 Kotlin 中使用 HtmlCompat.toHtml(spannable) 将其转换为 HTML。
var htmlString = HtmlCompat.toHtml(SpannableString(binding.text.text), HtmlCompat.FROM_HTML_MODE_LEGACY)
但是,如果文本同时应用了粗体和斜体,则返回的 HTML 嵌套不正确。
- 你好世界:输出
<p dir="ltr><b><i>Hello world</b></i></p>
如您所见,应用的标签<b><i> </b></i>
不是<b><i> </i></b>
.
如果文本没有格式化,或者是粗体或斜体,则返回正确的 HTML:
- 你好世界:输出
<p dir="ltr>Hello world</p>
- 你好世界:输出
<p dir="ltr><b>Hello world</b></p>
我想这个函数喜欢把<b>
and</b>
放在首位而不是<i>
and </i>
,但这会导致奇怪的结果,如图所示。所以问题是:如何让函数返回正确格式化的 HTML?