如何从基本 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”)。