Reputation: 9666
I'm using a webview in my android app, at the moment when the app is started the website is zoomed in quite a lot, i want it to be zoomed out to fit the width of the screen. I currently have this in my activity:
super.onCreate(savedInstanceState);
setContentView(R.layout.shop);
WebView webview;
webview = (WebView) findViewById(R.id.webview);
webview.setWebViewClient(new WebViewClient());
webview.getSettings().setJavaScriptEnabled(true);
webview.loadUrl("http://www.example.com");
Upvotes: 26
Views: 42184
Reputation: 364
If you need to reset the zoom level to its initial state every time a webpage loads (whether it's a refresh or a new page), you can implement the following code within the onPageFinished method. This will set the zoom to the default state:
override fun onPageFinished(view: WebView?, url: String?) {
super.onPageFinished(view, url)
view?.post {
view.zoomBy(0.0101f) // Ensure the value is slightly greater than 0.01
}
}
This approach ensures that the zoom is effectively reset. Special thanks to George Vortelinos for providing the initial solution.
Upvotes: 0
Reputation: 41
Set WebView settings like:
webView.settings.run {
builtInZoomControls = true
//hide +- zoom buttons
displayZoomControls = false
//zooms out the content to fit on screen by width
loadWithOverviewMode = true
//when page contains the viewport meta tag
useWideViewPort = true
}
But consider that zoom settings above, work only for WebView first run.
If you want to full zoom out every time you load a URL in WebView (I faced this case), use zoomBy like this
webView.loadUrl(url)
webView.zoomBy(0.02f)
Upvotes: 1
Reputation: 628
//This the the enabling of the zoom controls
webView.getSettings().setBuiltInZoomControls(true);
//This will zoom out the WebView
webView.getSettings().setUseWideViewPort(true);
webView.getSettings().setLoadWithOverviewMode(true);
webView.setInitialScale(1);
Upvotes: 8
Reputation: 728
For Kit Kat and later devices you need to set the viewport meta tag in the headers of the HTML page loaded by your WebView in order to prevent the default zoom in behavior.
<meta name="viewport" content="width=device-width, height=device-height, initial-scale=1.0, maximum-scale=1.0, user-scalable=no"/>
Upvotes: 3
Reputation: 1581
webview.getSettings().setLoadWithOverviewMode(true);
This will cause the webview to be zoomed out initially.
webview.getSettings().setUseWideViewPort(true);
The Webview will have a normal viewport (like desktop browser), when false the webview will have a viewport constrained to it's own dimensions.
EDIT: With the introduction of "Chrome web view" in Android KitKat, this code might not work.
Upvotes: 51
Reputation: 2552
This zooms out so that the content (an SVG in my case) fits on the screen but does not make unnecessary space.
webView.getSettings().setUseWideViewPort(true);
webView.setInitialScale(1);
Upvotes: 19
Reputation: 574
use the webSettings class to set the zoom level...
webview.getSettings().setDefaultZoom(WebSettings.ZoomDensity.FAR);
Upvotes: 2
Reputation: 2513
Try this:
webView.setInitialScale(50);
webPlanSettings.setDefaultZoom(WebSettings.ZoomDensity.FAR);
webPlanSettings.setUseWideViewPort(true);
Upvotes: 9