如何从我放在那里的 EditText 中获取相同的 html-string

How to get the same html-string from EditText that i put it there

我尝试在 EditText 中为我的文本使用 html-tags,我想将它保存在 Room 数据库中。所以我创建了一个带有 html 标签的字符串,如下所示:

EditText.setText("Hi <font color="#4B0082">there</font>".parseAsHtml())

它有效,但是当我尝试从 EditText 中取回它时:

EditText.text.toHtml()

我明白了:

<p dir="ltr">Hi <span style="color:#4B0082;">there</span></p>

为什么 EditText 会更改我的标签并添加其他内容?我根本不需要“p”和“span”标签。我应该做些什么?如何从 EditText 取回我的原始字符串?

试试这个:

String text = Html.toHtml(yourEditText.getText())

它应该 return 你的文本具有 html 格式

Android视图,一般情况下不要直接对HTML标签进行操作。当您将文本设置为 EditText 时,会发生翻译 Spans。在你的例子中,

"Hi <font color="#4B0082">there</font>"

字体颜色转换为 ForegroundColorSpan

当您尝试从 EditText 取回文本时,会发生反向转换,并且 ForegroundColorSpan 会转换为具有指定字体颜色样式的 HTML span 标记。这在外观上等同于原始 HTML 代码。

我假设,因为您要将文本放入 EditText,所以可以更改文本,而您想要的是将更新后的文本编码为与您放入 EditText 的类型相同的 HTML。 (如果您只是想检索与您放入 EditText 中的字符串完全相同的字符串,您可以尝试使用 View tag)。

我认为获得你想要的翻译的唯一方法是编写你自己的转换例程。您可以使用 getSpans(). You would write something similar to Html.toHtml() 从文本中获取跨度。这可能是一项简单或艰巨的任务,具体取决于翻译需要的稳健程度。

可能还有一个可以自定义的库,但我不知道有一个。