如何从我放在那里的EditText中获得相同的html字符串



我尝试在EditText中为文本使用html标记,并希望将其保存在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中取回我的原始字符串?

Android视图通常不会直接对HTML标记进行操作。当您将文本设置为"编辑文本"时,跨度数将发生转换。在您的示例中,

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

字体颜色被转换为ForegroundColorSpan。

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

我认为,由于您将文本放入EditText中,因此文本可以更改,并且您想要的是将更新后的文本编码为与放入EditText相同类型的HTML。(如果您只是想检索与放入EditText中的字符串完全相同的字符串,可以尝试使用View标记(。

我认为获得你想要的翻译的唯一方法是编写你自己的转换例程。您可以使用getSpans((从文本中获取跨度。你可以写一些类似于Html.toHtml((的东西。这可能是一个简单的任务,也可能是一项艰巨的任务,这取决于翻译的健壮性。

也可能有一个可以定制的库,但我不知道有一个。

试试这个:

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

它应该返回一个html格式的文本

最新更新