Android:删除Html.fromHtml的弃用警告

时间:2016-08-29 22:09:45

标签: android deprecated deprecation-warning fromhtml

我想删除Html.fromHtml(string)的弃用警告。

我试着这样做:

    if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.N) {
        htmlSpanned = Html.fromHtml(string,Html.FROM_HTML_MODE_LEGACY);
    } else {
        //noinspection deprecation
        htmlSpanned = Html.fromHtml(string);
    }

但在编译过程中它仍然会给我一个警告:

  

警告:(18,31)[弃用]来自Html中的HTML(字符串)   弃用

5 个答案:

答案 0 :(得分:4)

如果minSdkVersion 为24或更高,请使用fromHtml() that takes some flags as a parameter的版本。 AFAIK,FROM_HTML_MODE_LEGACY将是用于与旧的无标记fromHtml()兼容的标志值。

如果你的minSdkVersion低于24,你的选择是:

始终使用fromHtml(),可能使用快速修复(Alt-Enter)来取消Lint警告

使用fromHtml()的两个版本:如果您的应用程序在API Level 24+设备上运行,则为带有标记的版本,或者在旧设备上没有标记的应用程序。

答案 1 :(得分:3)

嗯,不推荐使用单参数fromHtml()Build检查确保您不会在旧设备上调用,但它不会更改compileSdkVersion为24的弃用事实。

您有四种选择:

  1. 将您的compileSdkVersion放在24以下。这会产生涟漪效应(例如,您不能使用24.x.x版本的支持库)并且不是一个很好的选择。

  2. minSdkVersion设置为24并删除单参数fromHtml()电话。这在2016年是不切实际的。

  3. 与删除线和Lint投诉一起生活。

  4. 将相应的@SuppressLint注释添加到方法中,以使IDE停止抱怨。 As Ahlem Jarrar notes,添加此内容的最简单方法是通过快速修复。

答案 2 :(得分:1)

这是我的解决办法:

Todo

效果很好。

答案 3 :(得分:0)

你可以尝试一下。我的意思是你的代码看起来很好,我试过它,它对我有用。

//获取我们的HTML内容

String htmlAsString = getString(R.string.html);
Spanned htmlAsSpanned = Html.fromHtml(htmlAsString);

//由TextView使用

//在TextView上设置html内容

TextView textView = (TextView) findViewById(R.id.textView);
textView.setText(htmlAsSpanned);

我们可以尝试一下:

@SuppressWarnings("deprecation")

答案 4 :(得分:0)

Android 或 Kotlin 或 Google 已经创建了 HtmlCompat,可以用来代替 Html 方法。将此依赖项实现 'androidx.core:core:1.0.1' 添加到您的应用的 build.gradle 文件中。确保您使用最新版本的 androidx.core:core。

这允许您使用:

 HtmlCompat.fromHtml(html, HtmlCompat.FROM_HTML_MODE_LEGACY);

如果需要,您可以将 HTML.FROM_HTML_MODE_LEGACY 转换为附加参数。这让您可以更好地控制使用哪个标志。

您可以在 HTML Class documentation

上阅读有关不同标志的更多信息