标签: fromhtml

Nougat上的Html.fromHtml不会调用自定义HtmlHandler

我有一个自定义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);
 }
Run Code Online (Sandbox Code Playgroud)

问题在于,HtmlHandler班级永远不会被调用.(我已经尝试过所有的旗帜).在HtmlHandler我处理标签和样式,例如background-color,color等等.我已经实现摆脱颜色rgb,rgba,hls等,但对牛轧糖只接受颜色与十六进制,因为牛轧糖,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>
Run Code Online (Sandbox Code Playgroud)

android fromhtml android-7.0-nougat

2
推荐指数
1
解决办法
668
查看次数

如何在 Android JAVA 中将带有 RGB 颜色的 HTML 字符串转换为带有十六进制颜色的 HTML 字符串

我有以下 html 文本(示例):

<p>?<span style="color: rgb(33, 150, 243);">This is a <span style="background-color: rgb(255, 235, 59);">test !!</span></span></p>
Run Code Online (Sandbox Code Playgroud)

我正在尝试在 TextView 中显示此文本。

textview.setText(Html.fromHtml(string));
Run Code Online (Sandbox Code Playgroud)

它有效,但不显示颜色。

为此,我必须以这种形式转换文本(使用十六进制颜色)

<p>?<span style="color: #2196f3;">This is a <span style="background-color: #ffeb3b;">test !!</span></span></p>
Run Code Online (Sandbox Code Playgroud)

我该怎么做?

我找不到解决方案......有没有人遇到过这个问题并且可以帮助我?

提前致谢 !

html java android colors fromhtml

1
推荐指数
1
解决办法
1007
查看次数

标签 统计

android ×2

fromhtml ×2

android-7.0-nougat ×1

colors ×1

html ×1

java ×1