0

我正在使用这样的 Webview 和 loadData 方法:

                    try {   
                    htmlEncode = URLEncoder.encode(html, "UTF-8").replaceAll("\\+", " ");
                } catch (UnsupportedEncodingException e) {
                    htmlEncode = html;
                    e.printStackTrace();
                }           
                webView.loadData( htmlEncode,"text/html; charset=UTF-8", "UTF-8");

html 是“html 字符串”。这些代码在除 android 4.0.4 之外的所有 android 版本中都可以正常工作。webView 不理解\n字符。它不能换行。我和我的伙伴搜索了几个小时,但找不到任何解决方案。有一些原因我们不能使用 loadDataWithBaseURL() 方法。你有没有遇到过这个问题?或者你有什么想法让我们找出问题所在吗?

4

3 回答 3

2

我解决了我的问题。我通过这种方式使用 webview:在运行时将 webview 添加到布局。所以,当我在 Android 4.0.4 上使用 loadDataWithBaseURL() 时。它不能显示 html 字符串,所以我改用 loadData() 方法。但是当我有时使用 loadData() 方法时,webview 也无法显示内容,或者 html 字符串编码有很多问题。但现在我有了解决方案。

        webView.postDelayed(new Runnable() {
        @Override
        public void run() {
            webView.loadDataWithBaseURL(null, html, "text/html", "UTF-8", "UTF-8");
        }
    }, 100);

我不知道为什么我们必须在调用 loadDataWithBaseURL 方法之前延迟一点时间。但正如我的猜测,可能是因为 webview 在加载 html 字符串之前需要时间来初始化。希望它可以帮助将来有人遇到这个问题。

于 2012-09-16T05:22:42.537 回答
1
webView.loadData(HtmlEncode, "text/html; charset=UTF-8", null);

以上应该适用于Android 4.0。在安卓 4.0 上测试。

编辑:在 4.0.3 上工作正常

于 2012-09-10T08:44:31.153 回答
0

看看这个问题:

https://code.google.com/p/android/issues/detail?id=6965

简而言之,解决方法是将 \n\r 替换为


对我很有用。

于 2014-01-17T08:55:11.037 回答