我想删除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(字符串) 弃用
答案 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的弃用事实。
您有四种选择:
将您的compileSdkVersion
放在24以下。这会产生涟漪效应(例如,您不能使用24.x.x版本的支持库)并且不是一个很好的选择。
将minSdkVersion
设置为24并删除单参数fromHtml()
电话。这在2016年是不切实际的。
与删除线和Lint投诉一起生活。
将相应的@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 转换为附加参数。这让您可以更好地控制使用哪个标志。
上阅读有关不同标志的更多信息