我正在使用Html.fromHtml
将HTML呈现在TextView
中。
Spanned result = Html.fromHtml(mNews.getTitle());
...
...
mNewsTitle.setText(result);
但是在Android N+中,Html.fromHtml
已经被弃用。
我应该如何找到新的实现方式?
我正在使用Html.fromHtml
将HTML呈现在TextView
中。
Spanned result = Html.fromHtml(mNews.getTitle());
...
...
mNewsTitle.setText(result);
但是在Android N+中,Html.fromHtml
已经被弃用。
我应该如何找到新的实现方式?
标签来
。//noinspection deprecation
return Html.fromHtml(source);
只在单个语句中禁止检查,而不是整个方法。
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()));
}
public Spanned fromHtml(String str){
return Build.VERSION.SDK_INT >= 24 ? Html.fromHtml(str, Html.FROM_HTML_MODE_LEGACY) : Html.fromHtml(str);
}
fromHtml()
如何处理换行符。这是在Nougat中添加的,并且仅涉及此类在Android版本之间不兼容的挑战。虽然它类似于框架的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);
minSdkVersion 15
和targetSdkVersion 23
的应用程序中使用您的库时,我会在_values-v24.xml_上遇到编译错误: Error:(3) Error retrieving parent for item: No resource found that matches the given name 'android:TextAppearance.Material.Widget.Button.Borderless.Colored'
. 您的库针对API级别25进行了定位。那么,我该如何继续使用它呢? - JJD尝试以下方法来支持基本的HTML标签,包括ul ol li标签。 创建如下所示的标签处理程序
import org.xml.sax.XMLReader;
import android.app.Activity;
import android.os.Bundle;
import android.text.Editable;
import android.text.Html;
import android.text.Html.TagHandler;
import android.util.Log;
public class MyTagHandler implements TagHandler {
boolean first= true;
String parent=null;
int index=1;
@Override
public void handleTag(boolean opening, String tag, Editable output,
XMLReader xmlReader) {
if(tag.equals("ul")) parent="ul";
else if(tag.equals("ol")) parent="ol";
if(tag.equals("li")){
if(parent.equals("ul")){
if(first){
output.append("\n\t•");
first= false;
}else{
first = true;
}
}
else{
if(first){
output.append("\n\t"+index+". ");
first= false;
index++;
}else{
first = true;
}
}
}
}
}
将文本设置在Activity上,如下所示
@SuppressWarnings("deprecation")
public void init(){
try {
TextView help = (TextView) findViewById(R.id.help);
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.N) {
help.setText(Html.fromHtml(getString(R.string.help_html),Html.FROM_HTML_MODE_LEGACY, null, new MyTagHandler()));
} else {
help.setText(Html.fromHtml(getString(R.string.help_html), null, new MyTagHandler()));
}
} catch (Exception e) {
e.printStackTrace();
}
}
在资源字符串文件中,将HTML文本作为
<![CDATA[ ...原始HTML数据...]] >
FROM_HTML_MODE_COMPACT
? - user924