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

Android WebView adding strange empty space at the bottom

本文关键字:空白 空间 WebView 底部 添加 Android      更新时间:2023-09-26

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

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

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的大小,它总是不同的。

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

我找到了下一个解决方案。这里使用了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段。好运!