我正在尝试使用带有 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 代码。
最佳答案
这似乎是由 known bug in WebView 引起的,如果您在提供的数据中有任何百分比,数据将被解释为 URL。
如错误报告中所述,已知的解决方法是将所有 %
替换为 %
。
在 similar SO post 中建议了另一种似乎工作得很好的解决方法并且还应涵盖可能导致相同问题的任何其他字符:
mWebView.loadData(URLEncoder.encode(data,"utf-8").replaceAll("\\+"," "), "text/html", "utf-8");
关于Android 2.3 webview loadData 只显示编码字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12792576/