网上的思路是等页面加载完毕后,通过调用js获取当前网页的高度,获取到高度后,设置webview的高度。但是我用网上的方法获取高度为0,后来发现,需要等onPageFinished执行的时候再延迟1秒,才可以获得正常高度。 代码如下:
1、添加webview调用的原生方法
webview.addJavascriptInterface(this, "App");
2、回调方法
@JavascriptInterface
public void resize(final float height) {
runOnUiThread(new Runnable() {
@Override
public void run() {
view_articleWeb.setLayoutParams(new LinearLayout.LayoutParams(getResources().getDisplayMetrics().widthPixels, (int) (height * getResources().getDisplayMetrics().density)));
}
});
}
3、onPageFinished里面调用js方法去获取网页高度,并且调用上面注册的原生方法。
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
webview.loadUrl("javascript:App.resize(document.body.getBoundingClientRect().height)");
}
},1500);
网友评论