我有一个自定义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>