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

时间:2016-06-18 17:38:32

标签: android textview

我已更新到SDK版本24,现在不推荐使用public static void main(String[] args) { final List<String> eventNames= new ArrayList<String>(); final List<Calendar> eventTimes= new ArrayList<Calendar>(); ArrayList<Integer> indices = range(eventNames.size()); Collections.sort(indices, new Comparator<Integer>() { @Override public int compare(Integer i, Integer j) { return eventTimes.get(i).compareTo(eventTimes.get(j)); } }); //Now to get the index i = 5 after sort you must do this eventNames.get(indices.get(5)); } private static ArrayList<Integer> range(int size) { return range(0, size); } public static ArrayList<Integer> range(int start, int end) { ArrayList<Integer> list = Lists.newArrayList(); for (int i = start; i < end; i++) { list.add(i); } return list; } 。并且Html类有一个带有额外参数名为flag的新方法,但它的最小API是24。

对于较低的API版本,此功能是否有替代方案?我不想为此目的使用Html.fromHtml()

3 个答案:

答案 0 :(得分:73)

或者:

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

  • 在API Level 23及更早版本的设备上使用Html.fromHtml(String),在API Level 24+设备上使用Html.fromHtml(String, int),使用Build.VERSION.SDK_INT查找您所在设备的API级别正在

  • 上运行

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

答案 1 :(得分:52)

只需使用

 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(String,int)获取24 api文档:

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

答案 2 :(得分:12)

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

ForceExecutionResult

只需使用带有flag参数的fromHtml函数。标志参数是

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

public static Spanned fromHtml(String source, int flags) {
    throw new RuntimeException("Stub!");
}