- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我有一个自定义的 TextView
,用于显示 html 文本。对于牛轧糖之前的设备,它可以工作。正如您在 Nougat 上已经知道的那样,fromHtml 已被弃用,它需要一个标志..所以我的代码是这样的
Spannable s = getRichText(text);
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.N) {
super.setText(Html.fromHtml(s.toString(), Html.FROM_HTML_MODE_COMPACT, this, new HtmlHandler(getContext())), BufferType.SPANNABLE);
} else {
super.setText(Html.fromHtml(s.toString(), this, new HtmlHandler(getContext())), BufferType.SPANNABLE);
}
问题在于,HtmlHandler
类永远不会被调用。 (我已经尝试了所有标志)。在 HtmlHandler
上,我处理标签和样式,例如 background-color
、color
等等。我已经实现了从 rgb
、rgba
、hls
等获取颜色。但是在 Nougat 上它只接受十六进制颜色,因为在 Nougat 上,fromHTML
可以“读取”颜色并显示它们。为什么会这样?我怎样才能保持颜色的方式?如果您有什么不明白,或需要更多详细信息,请告诉我。
我用来测试的html是
<p><strong>Server</strong><u> message</u><strong><u>!!!</strong></u> <span style="background-color: rgb(255,0,0);">Not working on Nugat</span></p>
最佳答案
Html.fromHtml()
只会调用你的 TagHandler
对于 fromHtml()
的 HTML 标签不认识。在您的示例 HTML 中,您有:
<p>
<strong>
<u>
<span>
在您的第一条评论中,您还提到了 div
.
其中,fromHtml()
已处理<p>
, <strong>
, 和 <u>
自 at least 2010 ,如果不是更早的话。 fromHtml()
在 Android 6.0 中还处理 <div>
(请参阅 the source 中的第 488-489 行),我忘记了这种支持是如何进行的。你的TagHandler
不会为这些标签中的任何一个调用,并且这种行为并不是特别新。
Android 7.0 添加了对 <span>
的支持(请参阅 the 7.1 source 的第 804-805 行),因此需要 TagHandler
的代码为 <span>
调用Android 7.0 和之前版本之间的行为会有所不同。
一般来说,支持的标签列表是未记录的。欢迎 Google 随时更改受支持标签的名单。
您的选择是:
接受它
获取一些资源 Html.java
将它重构到你自己的包中,然后使用该副本,根据需要进行修改
找到一些其他的 HTML-to- Spannable
你比较喜欢的源码
关于android - Nougat 上的 Html.fromHtml 不调用自定义 HtmlHandler,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40207611/
我正在尝试设置String的样式,然后再将其设置为TextView。但是,当我运行该应用程序时,没有样式应用于文本。 我已经在strings.xml中将字符串资源定义为 \u20B9%1$s add
这个问题已经有答案了: Html.fromHtml deprecated in Android N (15 个回答) 已关闭 6 年前。 将目标 SDK 版本更新至 24.0.0 后,fromHtml
如何删除 Android Studio 中已弃用的错误。 @SuppressWarnings("deprecated") public void setText(){ i
当我使用Html.fromHtml(source)时文本上的方法,所有未知标签都被删除(不幸的是,我有一个情况,其中表情符号是在 <> 符号中定义的,例如 )。有没有办法强制 Html.fromHt
我有一个 TextView ,我想以 TextView 的正常字体大小显示 0.0,然后以较小的文本大小显示 StringResult()。 如果我添加“0.0” + 它不起作用。为什么? publi
我从 API 收到带有换行符的文本,但我无法让换行符起作用。 这是我要显示的文本的一部分。 http://pastebin.com/CLnq16mP (将它粘贴到那里,因为 stackoverflow
Android Html.fromHtml 函数自动将不需要的文本转换为超链接。 这是我的代码: String htmlContent= "corners of nail.It has to";
我有一个 TextView我想在其中显示多色文本。我正在使用 html.fromHtml为此,但它没有显示任何颜色。 我的代码是: //statusToShow is a String Log.d("
我遇到了一个奇怪的问题: 我的 Html.fromHtml() 源字符串如下: Terrible experience with Nikko hotelIt was not easy to cance
也许这不是一个错误,因为文档并没有详细说明 fromHTML() 到底做了什么,但这对我来说仍然是个问题。如果提供的字符串依次包含两个或多个空格,fromHTML() 会删除除一个以外的所有空格: H
如果 tv.setText(Html.fromHtml(text)); 耗时太长,导致 UI 挂起,我该怎么办?如果我可以用一个线程来做,你能提供一个例子吗? 最佳答案 private Handler
我正在尝试使用 Html.fromHtml() 在 TextView 中设置背景。特别是,我想在第一个词上设置背景。 我使用了以下代码: Html.fromHtml("("+someText+")")
在我的应用程序中,我使用 Html.fromHtml(string).toString 方法删除了一些 当我解析一些 JSON 时收到的标签。 如果我离开 标签上,文本完全适合背景(背景是高度和宽度都
对齐是否在 TextView 的 HTML.fromHtml() 中起作用? 我试过了 Test 以及其中的一些变体,包括将不带括号的对齐标签放在段落标签中,但都没有用。文本始终保留。 感谢您的帮助!
我在 android nougat 上使用下面的代码并且它正在工作:- Html.fromHtml(" " + myText + "标签。 有什么方法可以在所有设备上工作吗? myText是recyl
我有需要在 TextView 中显示的 html 文本。 html 可能看起来像这样 - Text with background and color Html.fromHtml 不支持字体标签的颜色
我要显示 HTML " In the name of God the compassionate, the merciful" 在 TextView 中。所以我使用了Html.fromHtml(),
我在这个字符串中有 html 字符串和 SpannableString,我把它们都放在了 TextView 中,问题出在 SpannableString,Html.fromhtml()中没有显示。如何
我正在尝试将 HTML 文本分配给 TextView。以下是 HTML 示例: Some Text Some More Text 我正在使用 Html.fromHtml(myHtmlString) 来
我从 EditText 框中获取跨区文本,并使用 HTML.toHtml 将其转换为 HTML 标记字符串。这工作正常。我已验证该字符串是正确的并且包含 在适当的位置。但是,当我必须将标记字符串转换回
我是一名优秀的程序员,十分优秀!