如何从基本 HTML 页面获取文本并将其显示在 TextView 中。
我想这样做,因为它看起来比让 webview 显示文本更好。
html页面上只有一行。如果需要,我可以将其更改为 txt 文件。
你也可以提供一个简单的例子吗?
如何从基本 HTML 页面获取文本并将其显示在 TextView 中。
我想这样做,因为它看起来比让 webview 显示文本更好。
html页面上只有一行。如果需要,我可以将其更改为 txt 文件。
你也可以提供一个简单的例子吗?
您需要首先使用HttpClient从 Internet 检索数据之类的方法下载 HTML(假设您需要从 Internet 而不是本地文件获取它)。完成此操作后,您可以像您说的那样在 WebView 中显示 HTML,或者,如果 HTML 并不复杂并且只包含一些基本标签(<a>、<img>、<strong>、<em>、<br>、<p>等),您可以通过它直奔主题,TextView因为它支持一些基本的 HTML 显示。
为此,您只需调用Html.fromHtml,并将下载的 HTML 字符串传递给它。例如:
TextView tv = (TextView) findViewById(R.id.MyTextview);
tv.setText(Html.fromHtml(myHtmlString));
该fromHtml方法将解析 HTML 并应用一些基本格式,返回一个Spannable对象,然后可以直接将其传递给TextView'ssetText方法。它甚至支持链接和图像标签(不过,对于图像,您需要实现一个ImageGetter以实际提供相应的 Drawable)。但我不相信它支持 CSS 或内联样式。
上面代码片段中的 myHtmlString 需要包含实际的 HTML 标记,当然您必须从某个地方获得。您可以使用 HttpClient 执行此操作。
private String getHtml(String url)
{
HttpClient client = new DefaultHttpClient();
HttpGet request = new HttpGet(url);
try
{
HttpResponse response = client.execute(request);
BufferedReader reader = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
String line;
StringBuilder builder = new StringBuilder();
while((line = reader.readLine()) != null) {
builder.append(line + '\n');
}
return builder.toString();
}
catch(Exception e)
{
//Handle exception (no data connectivity, 404, etc)
return "Error: " + e.toString();
}
}
然而,仅使用该代码是不够的,因为它实际上应该在单独的线程上完成(事实上,Android 可能完全拒绝在 UI 线程上建立网络连接。请查看 AsyncTasks 以获取更多信息. 你可以在这里找到一些文档(向下滚动到“使用 Asynctask”)。