0

如何从基本 HTML 页面获取文本并将其显示在 TextView 中。

我想这样做,因为它看起来比让 webview 显示文本更好。

html页面上只有一行。如果需要,我可以将其更改为 txt 文件。

你也可以提供一个简单的例子吗?

4

1 回答 1

1

您需要首先使用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 或内联样式。

如何下载 HTML:

上面代码片段中的 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”)。

于 2012-06-23T16:14:54.243 回答