我有一个自定义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) 我有以下 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)
我该怎么做?
我找不到解决方案......有没有人遇到过这个问题并且可以帮助我?
提前致谢 !