Android 呈现简单HTML片段的方法
我正在编写一个用于访问StackExchange的Android应用程序,我正在寻找处理呈现StackExchange API中使用的简单HTML片段的最佳方法。API中唯一的HTML位于问题、答案和注释的主体中。当然,注释使用的是更受限制的HTML子集。大多数HTML只是简单的格式,如Android 呈现简单HTML片段的方法,android,android-widget,html-parsing,stackexchange,Android,Android Widget,Html Parsing,Stackexchange,我正在编写一个用于访问StackExchange的Android应用程序,我正在寻找处理呈现StackExchange API中使用的简单HTML片段的最佳方法。API中唯一的HTML位于问题、答案和注释的主体中。当然,注释使用的是更受限制的HTML子集。大多数HTML只是简单的格式,如,,,等等。但也有和偶尔需要处理的标记。我正在考虑尝试使用TextView并用样式替换HTML,但这可能限制太多。我看了一下WebView,但这似乎有些过分了。WebView似乎适合于加载外部动态内容并启动多个线
,,,等等。但也有和偶尔需要处理的标记。我正在考虑尝试使用TextView并用样式替换HTML,但这可能限制太多。我看了一下WebView,但这似乎有些过分了。WebView似乎适合于加载外部动态内容并启动多个线程。我只打算呈现API中提供的简单、固定的HTML,它不包括任何CSS或JavaScript
protected Spanned correctLinkPaths (Spanned spantext) {
Object[] spans = spantext.getSpans(0, spantext.length(), Object.class);
for (Object span : spans) {
int start = spantext.getSpanStart(span);
int end = spantext.getSpanEnd(span);
int flags = spantext.getSpanFlags(span);
if (span instanceof URLSpan) {
URLSpan urlSpan = (URLSpan) span;
if (!urlSpan.getURL().startsWith("http")) {
if (urlSpan.getURL().startsWith("/")) {
urlSpan = new URLSpan("http://www.domain.com" + urlSpan.getURL());
} else {
urlSpan = new URLSpan("http://www.domain.com/" + urlSpan.getURL());
}
}
((Spannable) spantext).removeSpan(span);
((Spannable) spantext).setSpan(urlSpan, start, end, flags);
}
}
return spantext;
}
此外,我在WebView中遇到了编码问题,在WebView中,像卷曲引号这样的字符显示为多个字符,在TextView中使用时显示良好。您可以使用Html.fromHtml()
它将给您留下一个跨距的
类型的对象。您可以使用位置上的单独跨距来处理标记
编辑标记的示例。
情境:带有html标记的文本,使用html.fromhtml工作。但有时URL是相对的(使用“/file.html”而不是http://domain.com/file.html)所以它不能被使用。将Spanable发送到下面的my函数将查找URL的所有跨距并添加域。当然,您可以为您的特定标记使用其他内容:
我不确定这是否是最有效的方法,这是我与spannables的第一次联系,但至少它展示了一些你可以用spannables做的技巧:D这显然更像我所希望的。我将不得不玩一些,看看它是否能满足我的所有需要。我添加了一个示例,只是为了展示一些您可以做的事情:)