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)));
}
});
}