我使用html . fromhtml在TextView中查看html。
Spanned result = Html.fromHtml(mNews.getTitle());
...
...
mNewsTitle.setText(result);
但是Html.fromHtml现在在Android N+中已弃用
我怎样才能找到做这件事的新方法?
我使用html . fromhtml在TextView中查看html。
Spanned result = Html.fromHtml(mNews.getTitle());
...
...
mNewsTitle.setText(result);
但是Html.fromHtml现在在Android N+中已弃用
我怎样才能找到做这件事的新方法?
当前回答
fromHtml
此方法在API级别24中已弃用。
你应该使用FROM_HTML_MODE_LEGACY
用空行(两个换行符)分隔块级元素 人物)介于两者之间。这是在N之前的遗留行为。
Code
if (Build.VERSION.SDK_INT >= 24)
{
etOBJ.setText(Html.fromHtml("Intellij \n Amiyo",Html.FROM_HTML_MODE_LEGACY));
}
else
{
etOBJ.setText(Html.fromHtml("Intellij \n Amiyo"));
}
Kotlin的
fun setTextHTML(html: String): Spanned
{
val result: Spanned = if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.N) {
Html.fromHtml(html, Html.FROM_HTML_MODE_LEGACY)
} else {
Html.fromHtml(html)
}
return result
}
Call
txt_OBJ.text = setTextHTML("IIT Amiyo")
其他回答
为了扩展@Rockney和@k2col的答案,改进后的代码可以如下所示:
@NonNull
public static Spanned fromHtml(@NonNull String html) {
if (CompatUtils.isApiNonLowerThan(VERSION_CODES.N)) {
return Html.fromHtml(html, Html.FROM_HTML_MODE_LEGACY);
} else {
//noinspection deprecation
return Html.fromHtml(html);
}
}
其中CompatUtils.isApiNonLowerThan:
public static boolean isApiNonLowerThan(int versionCode) {
return Build.VERSION.SDK_INT >= versionCode;
}
不同之处在于没有额外的局部变量,并且只在else分支中弃用。所以这不会抑制所有的方法,而是单个分支。
它可以帮助谷歌将决定在一些未来版本的Android弃用甚至fromHtml(字符串源,int标志)方法。
只需要创建一个函数:
public Spanned fromHtml(String str){
return Build.VERSION.SDK_INT >= 24 ? Html.fromHtml(str, Html.FROM_HTML_MODE_LEGACY) : Html.fromHtml(str);
}
比较fromHtml()的标志。
<p style="color: blue;">This is a paragraph with a style</p>
<h4>Heading H4</h4>
<ul>
<li style="color: yellow;">
<font color=\'#FF8000\'>li orange element</font>
</li>
<li>li #2 element</li>
</ul>
<blockquote>This is a blockquote</blockquote>
Text after blockquote
Text before div
<div>This is a div</div>
Text after div
我有很多这些警告,我总是使用FROM_HTML_MODE_LEGACY,所以我做了一个名为HtmlCompat的助手类,包含以下内容:
@SuppressWarnings("deprecation")
public static Spanned fromHtml(String source) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
return Html.fromHtml(source, Html.FROM_HTML_MODE_LEGACY);
} else {
return Html.fromHtml(source);
}
}
来自官方文件:
fromHtml(String)方法在API级别24中已弃用。使用fromHtml(String, int) 代替。 to_html_段落_lines_continuous选项toHtml(span, int):将以“\n”分隔的连续文本行换行<p> 元素。 to_html_段落_lines_individual选项toHtml(span, int):将每一行由'\n'分隔的文本包装在<p>或<li>内 元素。
https://developer.android.com/reference/android/text/Html.html