Android WebView在底部添加了奇怪的空白空间

时间:2015-09-30 20:44:11

标签: javascript android webview

我正在尝试使用WebView为加载的JavaScript添加更多空白空间。

我使用loadDataWithBaseUrl()资源中的String加载数据。 然后,在测量一些内容之后,我需要使WebView更大,比如100像素。 所以我使用loadDataWithBaseUrl()调用javascript函数:

mWebView.loadUrl("javascript:addHeight()");

Javascript函数在原始HTML中定义:

function addHeight() { " +
    var elemDiv = document.createElement('div');
    elemDiv.style.cssText = 'height:100px;'; 
    document.body.appendChild(elemDiv); 
} 

在此之后,WebView调整自身大小以适应新内容。但是,生成的高度不是originalSize + 100px,而是更大。 我不知道问题出在哪里。我无法确定目标大小,因为它取决于附加div的大小,并且总是不同。

有人试过这个吗?你熟悉这种行为吗?

1 个答案:

答案 0 :(得分:2)

found the next solution。有使用JS回调。我希望这可以帮助你。这种尺寸变化应该比动态更好。

    private void setupWebView() {
    webView.getSettings().setJavaScriptEnabled(true);
    webView.setWebViewClient(new WebViewClient() {
        @Override
        public void onPageFinished(WebView view, String url) {
            webView.loadUrl("javascript:MyApp.resize(document.body.getBoundingClientRect().height)");
            super.onPageFinished(view, url);
        }
    });
    webView.addJavascriptInterface(this, "MyApp");
}
@JavascriptInterface
public void resize(final float height) {
    MyActivity.this.runOnUiThread(new Runnable() {
        @Override
        public void run() {
            webView.setLayoutParams(new LinearLayout.LayoutParams(getResources().getDisplayMetrics().widthPixels, (int) (height * getResources().getDisplayMetrics().density)));
        }
    });
}

见第4段of this list。祝你好运!