Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/444.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Android WebView在底部添加奇怪的空白_Javascript_Android_Webview - Fatal编程技术网

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

Javascript Android WebView在底部添加奇怪的空白,javascript,android,webview,Javascript,Android,Webview,我正在尝试使用JavaScript向加载的WebView添加更多的空白空间 我使用loadDataWithBaseUrl()从String资源加载数据。 然后,在测量了一些内容之后,我需要将WebView放大,比如100像素。 因此,我使用loadDataWithBaseUrl()调用javascript函数: Javascript函数在原始HTML中定义: function addHeight() { " + var elemDiv = document.createElement('

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

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

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段。祝你好运

“结果高度”是指JavaScript代码中
window.innerHeight
window.outerHeight
报告的WebView视图元素(在Android端)的高度还是页面尺寸?这不是一个明确的问题,请显示JavaScript addHeight()代码。使用Android 5.1.1,似乎什么也没有发生-设置LayoutParams根本不会改变WebView。
    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)));
        }
    });
}