Android 不推荐使用Html.fromHtml(),有什么替代方案?

Android 不推荐使用Html.fromHtml(),有什么替代方案?,android,textview,Android,Textview,我更新到SDK版本24,现在Html.fromHtml()已被弃用。Html类有一个新的方法,它有一个名为flag的额外参数,但它的最小API是24 对于较低的API版本,是否有此函数的替代方案?。我不想为此使用WebView。实际上还有另一个带有flag参数的方法 /** @deprecated */ @Deprecated public static Spanned fromHtml(String source) { throw new RuntimeException("Stub!

我更新到SDK版本24,现在
Html.fromHtml()
已被弃用。Html类有一个新的方法,它有一个名为flag的额外参数,但它的最小API是24


对于较低的API版本,是否有此函数的替代方案?。我不想为此使用
WebView

实际上还有另一个带有flag参数的方法

/** @deprecated */
@Deprecated
public static Spanned fromHtml(String source) {
    throw new RuntimeException("Stub!");
}

public static Spanned fromHtml(String source, int flags) {
    throw new RuntimeException("Stub!");
}
只需使用带有flag参数的fromHtml函数。标志参数为

public static final int FROM_HTML_MODE_COMPACT = 63;
public static final int FROM_HTML_MODE_LEGACY = 0;
public static final int FROM_HTML_OPTION_USE_CSS_COLORS = 256;
public static final int FROM_HTML_SEPARATOR_LINE_BREAK_BLOCKQUOTE = 32;
public static final int FROM_HTML_SEPARATOR_LINE_BREAK_DIV = 16;
public static final int FROM_HTML_SEPARATOR_LINE_BREAK_HEADING = 2;
public static final int FROM_HTML_SEPARATOR_LINE_BREAK_LIST = 8;
public static final int FROM_HTML_SEPARATOR_LINE_BREAK_LIST_ITEM = 4;
public static final int FROM_HTML_SEPARATOR_LINE_BREAK_PARAGRAPH = 1;
public static final int TO_HTML_PARAGRAPH_LINES_CONSECUTIVE = 0;
public static final int TO_HTML_PARAGRAPH_LINES_INDIVIDUAL = 1;
要么:

  • 在所有API级别上使用
    Html.fromHtml(字符串)
    ,或者

  • 在API级别23及更早的设备上使用
    Html.fromHtml(String)
    ,在API级别24及以上的设备上使用
    Html.fromHtml(String,int)
    ,使用
    Build.VERSION.SDK\u int
    查找正在运行的设备的API级别

在本例中,“deprecated”是一个寻找双参数方法的提示,但单参数方法仍然有效,并且(很可能)会在相当长的一段时间内有效。

只需使用

 if (Build.VERSION.SDK_INT >= 24) {
     Html.fromHtml(String, int) // for 24 api and more
 } else {
     Html.fromHtml(String) // or for older api
 }
要将Html.fromHtml(字符串,int)用于24 api,请遵循以下文档:


该方法调用需要上面的API 24,我发现并编辑了我的问题,@OmerKarakose编译器无法解析整数标志。它需要以下格式:fromHtml(字符串源,int标志,Html.ImageGetter-ImageGetter,Html.TagHandler-TagHandler)@OmerKarakose错误:找不到适用于fromHtml(字符串,int)urlBuilder.setText(Html.fromHtml(encodedUrl1,FROM_Html_MODE_LEGACY))的方法; ^ 方法Html.fromHtml(字符串)不适用(实际参数列表和形式参数列表长度不同)方法Html.fromHtml(字符串、ImageGetter、TagHandler)不适用(实际参数列表和形式参数列表长度不同)1error@Anon我认为您没有使用android api级别24或更高
Html.fromHtml(字符串源代码,int标志)
method随api 24提供。@OmerKarakose我在app:build.gradle中的目标api是23,这是问题吗?在api级别24+Html.fromHtml(字符串,Html.FROM_Html_MODE_LEGACY)上;Hello@Commonware,我们可以使用HtmlEscapers类进行此操作吗@m0rpheu5:这似乎不能替代
Html
。您可以在这篇博文中查看这些标志的作用:
“现场硬度测试报告”
在这种情况下不起作用@Commonware是我的一个小偏好:
if(Build.VERSION.SDK\u INT>=Build.VERSION\u CODES.N){Html.fromHtml(String,INT)//对于24个api和更多的api}或者{Html.fromHtml(String)//对于旧的api}