4

画像を表示するために loadData で webview を使用しようとしています:

        String data = "<html><head><title>Photo</title></head>";
        data = data + "<body><center><img width=\"100%\" src=\"" + imageUrl + "\" /></center></body></html>";

        imageWebView.getSettings().setLoadWithOverviewMode(true);
        imageWebView.getSettings().setUseWideViewPort(true);
        imageWebView.getSettings().setBuiltInZoomControls(true);
        imageWebView.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);
        imageWebView.setScrollbarFadingEnabled(false);
        imageWebView.loadData(data, "text/html", "UTF-8");
        imageWebView.setBackgroundColor(0x00000000);

4.1 エミュレーターでは問題なく動作し、画像が表示されます。2.3 では、エンコードされた html コードを表示するだけです。

4

1 に答える 1

5

これは、提供されたデータにパーセンテージがある場合、データが URL として解釈されるWebView の既知のバグが原因のようです。

既知の回避策は、バグ レポートに記載されているように、すべて%をに置き換えること&#37;です。

非常にうまく機能すると思われる別の回避策が同様の SO 投稿で提案されており、同じ問題を引き起こす可能性のある他の文字もカバーする必要があります。

mWebView.loadData(URLEncoder.encode(data,"utf-8").replaceAll("\\+"," "), "text/html", "utf-8");
于 2013-01-21T15:14:57.547 に答える