我使用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+中已弃用
我怎样才能找到做这件事的新方法?
当前回答
这是我的解决方案。
if (Build.VERSION.SDK_INT >= 24) {
holder.notificationTitle.setText(Html.fromHtml(notificationSucces.getMessage(), Html.FROM_HTML_MODE_LEGACY));
} else {
holder.notificationTitle.setText(Html.fromHtml(notificationSucces.getMessage()));
}
其他回答
比较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
框架类已被修改为需要一个标志来通知fromHtml()如何处理换行符。这是在Nougat中添加的,并且只涉及到这个类在Android版本之间不兼容的挑战。
我已经发布了一个兼容性库来标准化和后移植类,并包括更多元素和样式的回调:
https://github.com/Pixplicity/HtmlCompat
虽然它类似于框架的Html类,但需要一些签名更改以允许更多回调。以下是来自GitHub页面的示例:
Spanned fromHtml = HtmlCompat.fromHtml(context, source, 0);
// You may want to provide an ImageGetter, TagHandler and SpanCallback:
//Spanned fromHtml = HtmlCompat.fromHtml(context, source, 0,
// imageGetter, tagHandler, spanCallback);
textView.setMovementMethod(LinkMovementMethod.getInstance());
textView.setText(fromHtml);
或者你可以使用androidx.core.text.HtmlCompat:
HtmlCompat.fromHtml("<b>HTML</b>", HtmlCompat.FROM_HTML_MODE_LEGACY)
HtmlCompat纪录片
为了扩展@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标志)方法。
这是我的解决方案。
if (Build.VERSION.SDK_INT >= 24) {
holder.notificationTitle.setText(Html.fromHtml(notificationSucces.getMessage(), Html.FROM_HTML_MODE_LEGACY));
} else {
holder.notificationTitle.setText(Html.fromHtml(notificationSucces.getMessage()));
}