White space at the bottom of WebView in Android

2019-07-03 22:50发布

问题:

I'm developing an Android application and I'm loading one google maps iframe in a WebView, just like this one:

http://maps.google.es/maps/empw?url=http:%2F%2Fmaps.google.es%2Fmaps%3Ff%3Dq%26source%3Ds_q%26hl%3Des%26geocode%3D%26q%3Dmadrid%26aq%3D%26sll%3D40.396764,-3.713379%26sspn%3D11.856886,23.269043%26vpsrc%3D0%26ie%3DUTF8%26hq%3D%26hnear%3DMadrid,%2BComunidad%2Bde%2BMadrid%26t%3Dm%26z%3D10%26ll%3D40.416691,-3.700345%26output%3Dembed&hl=es&gl=es

It is showing correctly in Android emulator, but when I try in a real device a white space quite big appears at the bottom of the screen, so you can't see the whole iframe. I tried with two mobiles, one with android 2.2 and another one with android 2.3

I had a look to this one which sounds the same thing:

Problem with extra space at the bottom of android Webview

but it didn't work for me. Also tried some other things I read about like:

webView.getSettings().setUseWideViewPort(true);

webView.setWebViewClient(new WebViewClient() {
        @Override
        public boolean shouldOverrideUrlLoading (WebView view, String url) {
            view.loadUrl(url);
            return false;
        }
    });

but nothing worked. Any idea?

Thanks in advance.

回答1:

I can see the <body> element at the link you posted has bottom margin of 14px - maybe that's it? You can eliminate it using a JavaScript snippet in your WebView after you have loaded the page, like this:

myWebView.loadUrl("javascript:document.getElementsByTagName('body')[0].style.marginBottom = '0px'");

also, there is a 44px margin on the right, if you wanna get rid of that one also, should be something like this:

myWebView.loadUrl("javascript:document.getElementsByTagName('body')[0].style.marginBottom = '0px';document.getElementsByTagName('body')[0].style.marginRight = '0px';");

Also, to future-proof your app, you may want to set all four margins to 0, just in case.



回答2:

Set the bottom and right margins to 0:

webView.loadUrl("javascript:document.body.style.marginBottom=document.body.style.marginBottom= '0px'");


回答3:

It could be the problem with your XML.

Can you check that your WebView is not inside the ScrollView or anything which is having its inbuilt scroll. It might result in extra white spaces.



回答4:

The other answers didn't work for me but this did:

webView.loadUrl("javascript:(function () {document.getElementsByTagName('body')[0].style.marginBottom = '0'})()");