前言
我们在开发中难免会遇到一个字符串中有不同颜色的字体或者有不同大小的字体这样的需求,所以可能会用到Html.fromHtml(String source) ,代码如下:
String str2 = "今天<font color='#FF0000'><small>天气不错</small></font>";
tv2.setText(Html.fromHtml(str2));
一、问题
在API level 24及以上这个方法是过时的。
二、解决办法
API Level 24或以上使用2个参数的方法,需要添加一个flag, Html.fromHtml(String source, int flags) 。代码如下:
TextView tv = (TextView) findViewById(R.id.tv_text);
String content = "今天<font color='#FF0000'><small>天气不错</small></font>";
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.N) {
tv.setText(Html.fromHtml(content,Html.FROM_HTML_MODE_LEGACY));
} else {
tv.setText(Html.fromHtml(content));
}
其中两个的flags所代表的意思分别是:
FROM_HTML_MODE_COMPACT:html块元素之间使用一个换行符分隔
FROM_HTML_MODE_LEGACY:html块元素之间使用两个换行符分隔
参考stackoverflow上的解答:https://stackoverflow.com/questions/37899856/html-fromhtml-is-deprecated-what-is-the-alternative