Haw*_*awk 6 javascript android webview
我正在尝试为加载的WebView使用添加更多空白空间JavaScript.
我loadDataWithBaseUrl()从String资源加载数据.然后,在测量了一些内容之后,我需要制作WebView更大的内容,例如100像素.所以我用javascript函数调用loadDataWithBaseUrl():
mWebView.loadUrl("javascript:addHeight()");
Run Code Online (Sandbox Code Playgroud)
Javascript 函数在原始HTML中定义:
function addHeight() { " +
var elemDiv = document.createElement('div');
elemDiv.style.cssText = 'height:100px;';
document.body.appendChild(elemDiv);
}
Run Code Online (Sandbox Code Playgroud)
在此之后,WebView调整自身大小以适应新内容.但是,生成的高度不是originalSize + 100px,而是更大.我不知道问题出在哪里.我无法确定目标大小,因为它取决于附加的大小,div它将始终不同.
有人试过吗?你熟悉这种行为吗?
小智 2
我找到了下一个解决方案。这里用到了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)));
}
});
}
Run Code Online (Sandbox Code Playgroud)
请参阅此列表的第 4 段。祝你好运!
| 归档时间: |
|
| 查看次数: |
1044 次 |
| 最近记录: |