0

我在代码中创建 webview。在这个 webview 中,我展示了图片。现在我有两个问题。我如何以全尺寸显示图像,因为我的图片分辨率为 1381x1829,而我只看到这张图片的一部分。第二。正如您在代码中看到的,我从资产加载图片,但我想从 sd 卡加载图片。我怎么能这样做?

这是代码:

    WebView web = new WebView(getContext());
web.getSettings().setJavaScriptEnabled(true);
web.getSettings().setBuiltInZoomControls(true);
web.loadUrl("file:///android_asset/lj.png");


addView(web);
4

4 回答 4

3

这个解决方案非常适合我:

webView.setInitialScale(30);
WebSettings webSettings = webView.getSettings();
webSettings.setUseWideViewPort(true);
于 2015-10-21T23:06:51.107 回答
1

此方法webview.getSettings().setBuiltInZoomControls(true)将让您实现非多点触控屏幕的内置缩放控制

您可以使用此代码从任何地方从 sdcard 加载图像到 webview。那就是如果你想从多个位置加载多个图像。

String base = Environment.getExternalStorageDirectory().getAbsolutePath().toString() + "/Your/Folder";
String imagePath = "file:/"+ base + "/test.jpg";
String html = "<html><head></head><body><img src=\""+ imagePath + "\"></body></html>";
mWebView.loadData(html, "text/html","utf-8");

但是如果你想加载存在于同一个父文件夹下的图像,这将解决问题

String imagePath = "test.jpg";
String html = "<html><head></head><body><img src=\""+ imagePath + "\"></body></html>";
mWebView.loadDataWithBaseURL("file:///mnt/sdcard/Your/Folder/", html, "text/html","utf-8",null);

请注意,如果您尝试将 1600x1840 等高分辨率图像加载到 webview,webview 将减少图像分辨率以维持内存使用,这会导致图像看起来很糟糕

于 2012-07-10T08:05:39.573 回答
1

将此添加到您的 HTML 中:

<style type='text/css'>
   img {max-width: 100%;height:initial;} div,p,span,a {max-width: 100%;}
   </style>

这将使您的图像缩放以适合屏幕尺寸。

于 2012-07-11T09:14:43.033 回答
0

要删除默认填充 - 不要忘记设置样式:

<html><head></head><body style="padding:0; margin:0;"><img src=""+ gifUrl + ""
width="100%"></body></html>
于 2014-10-02T00:35:30.350 回答