Android: 如何移除关于Html.fromHtml的弃用警告?

3
我希望您能帮我去掉关于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类中的fromHtml(String)方法已被弃用。


你的minSdkVersion是高于还是低于24? - Ahlem Jarrar
在我的Gradle文件中,我有:minSdkVersion 15,targetSdkVersion 24。 - Daniele B
5个回答

4

4
好的,单参数的fromHtml()已经被弃用。虽然Build检查确保您不会在旧设备上调用它,但这并不改变它在compileSdkVersion为24时已经被弃用的事实。
您有四个选择:
  1. compileSdkVersion降至24以下。这会产生连锁反应(例如,您无法使用支持库的24.x.x版本),并且不是一个好选择。
  2. 将您的minSdkVersion设置为24,并摒弃单参数的fromHtml()调用。这在2016年是不切实际的。
  3. 接受删除线和Lint警告。
  4. 向该方法添加适当的@SuppressLint注释,以使IDE停止抱怨。正如Ahlem Jarrar所指出的那样,最简单的方法是通过快速修复来添加。

1
这是我曾经的解决方案:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
    textField.setText(Html.fromHtml(htmlText, Html.FROM_HTML_MODE_COMPACT));
} else {
    textField.setText(Html.fromHtml(htmlText);
}

它运行得非常好。


1
这是针对此情况最优化的解决方案。 - Mark Delphi

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")

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类文档中了解有关不同标志的更多信息。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接