我正在尝试使用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
的大小,并且总是不同。
有人试过这个吗?你熟悉这种行为吗?
答案 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。祝你好运!