我Html.fromHtml用来查看 .html 中的 html TextView。
Html.fromHtml
TextView
Spanned result = Html.fromHtml(mNews.getTitle()); ... ... mNewsTitle.setText(result);
但Html.fromHtml现在在 Android N+ 中已弃用
什么/我如何找到这样做的新方法?
更新 :正如下面提到的@Andy,谷歌已经创建了HtmlCompat它可以用来代替下面的方法。将此依赖项添加implementation'androidx.core:core:1.0.1 到应用程序的 build.gradle文件中。确保使用最新版本的androidx.core:core.
HtmlCompat
implementation'androidx.core:core:1.0.1
androidx.core:core
这允许您使用:
HtmlCompat.fromHtml(html, HtmlCompat.FROM_HTML_MODE_LEGACY);
您可以在HtmlCompat文档中阅读有关不同标志的更多信息
原始答案: 在 Android N 中,他们引入了一种新Html.fromHtml方法。Html.fromHtml现在需要一个名为 flags 的附加参数。此标志使您可以更好地控制 HTML 的显示方式。
在 Android N 及更高版本上,您应该使用这种新方法。旧方法已弃用,可能会在未来的 Android 版本中删除。
您可以创建自己的 Util 方法,它将在旧版本上使用旧方法,在 Android N 及更高版本上使用新方法。如果您不添加版本,请检查您的应用程序将在较低的 Android 版本上中断。您可以在 Util 类中使用此方法。
@SuppressWarnings("deprecation") public static Spanned fromHtml(String html){ if(html == null){ // return an empty spannable if the html is null return new SpannableString(""); }else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { // FROM_HTML_MODE_LEGACY is the behaviour that was used for versions below android N // we are using this flag to give a consistent behaviour return Html.fromHtml(html, Html.FROM_HTML_MODE_LEGACY); } else { return Html.fromHtml(html); } }
如果需要,您可以将其HTML.FROM_HTML_MODE_LEGACY转换为附加参数。这使您可以更好地控制使用哪个标志。
HTML.FROM_HTML_MODE_LEGACY