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 メソッドを呼び出す前に、少し時間を遅らせる必要がある理由がわかりません。しかし、私の推測では、html 文字列をロードする前に webview を初期化する時間が必要なためかもしれません。将来、誰かがこの問題を抱えているのに役立つことを願っています。

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

上記は Android 4.0 で動作するはずです。Android 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 に答える