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

Aaw*_*ali 43 android textview

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

对于较低的API版本,此功能是否有任何替代方案?我不想WebView为此目的使用a .

Com*_*are 78

或者:

  • 使用Html.fromHtml(String)上的所有API级别,或者,

  • 使用Html.fromHtml(String)于API等级23及以上的设备,并Html.fromHtml(String, int)在API等级24+的设备,使用Build.VERSION.SDK_INT找出您正在运行的设备的API级别

在这种情况下,"不赞成"是一个提示,寻找双参数方法,但单参数方法仍然有效,并且(很可能)将在相当长的一段时间内这样做.

  • 在API Level 24+ Html.fromHtml(string,Html.FROM_HTML_MODE_LEGACY); (14认同)

Ogn*_*air 53

只是用

 if (Build.VERSION.SDK_INT >= 24) {
     Html.fromHtml(String, int) // for 24 api and more
 } else {
     Html.fromHtml(String) // or for older api
 }
Run Code Online (Sandbox Code Playgroud)

使用Html.fromHtml(String,int)获取24 api文档:

https://developer.android.com/reference/android/text/Html.html

  • 我的一个小优先选择:`if(Build.VERSION.SDK_INT> = Build.VERSION_CODES.N){Html.fromHtml(String,int)// for 24 api and more} else {Html.fromHtml(String)//或对于旧的api}` (8认同)

oka*_*ose 12

实际上还有另一种带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!");
}
Run Code Online (Sandbox Code Playgroud)

只需使用带有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;
Run Code Online (Sandbox Code Playgroud)