2010-10-13 88 views
10

我打算在webview中显示来自SD卡的图像,以便利用他内置的webview的缩放功能。但是,我在使用大于屏幕尺寸的图像(例如1800x1200)来显示适合屏幕的问题(如ImageView中)时遇到了问题。我想要首先完整显示图像,并向用户提供缩放控制。 我已经尝试使用WRAP_CONTENT为webview的宽度和高度,但那不起作用。 任何想法? 以下是我使用的代码片段:在webview中适合图像

String path = getRealPathFromURI(mUriList.get(0)); // this gets the file path 
    webView = (WebView) findViewById(R.id.WebView01); 
WebSettings settings= webView.getSettings(); 
settings.setBuiltInZoomControls(true); 
settings.setSupportZoom(true);  
webView.loadUrl("file://" + path); 
+0

的可能的复制[灿Android的WebView中自动调整图像巨大?](http://stackoverflow.com/questions/3099344/can-androids-webview-automatically-resize-huge-images) – 2015-12-08 17:25:22

回答

3

该诀窍对我来说:

webView.setInitialScale(30); 
WebSettings webSettings = webView.getSettings(); 
webSettings.setUseWideViewPort(true); 
9
private WebView mWebView2; 
    mWebView2 = (WebView)findViewById(R.id.webview); 
    mWebView2.getSettings().setJavaScriptEnabled(true); 
    mWebView2.getSettings().setLoadWithOverviewMode(true); 
    mWebView2.getSettings().setUseWideViewPort(true); 
    mWebView2.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY); 
    mWebView2.setScrollbarFadingEnabled(true); 
    mWebView2.loadDataWithBaseURL("file:///android_asset/", "<img src=\"banner5.png\" height=\"98%\" width=\"100%\"/>", "text/html", "utf-8", null); 

图像在资产文件夹

4

如果你正确地写你的HTML ,你不必做任何“setLoadWithOverviewMode”,“setUseWideViewPort”或“setInitialScale”。而且绝对没有理由启用JavaScript。

这一条线为我工作:

webView.loadDataWithBaseURL("file://" + directory, "<img src=\"" + name + "\" width=\"100%\"/>", "text/html", "utf-8", null);

的下划线HTML代码:

<img src=YourImage.png width="100%" />,通过不设置的高度,它的纵横比将被保留。

+0

不设置高度(或者覆盖它到'auto')[为我工作](https://github.com/FezVrasta/bootstrap-material-design/issues/768)。 – 2015-12-08 17:47:49

0
WebSettings settings = webView.getSettings(); 

settings.setUseWideViewPort(true); 

settings.setLoadWithOverviewMode(true)