1、注入获取webView高度的js方法
webView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
// view.loadUrl(url);
return true;//true时,不可点击跳页效果,false时,可以点击跳页
}
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
}
@Override
public void onPageFinished(WebView view, String url) {
view.getSettings().setJavaScriptEnabled(true);
webView.loadUrl("javascript:window.yxbl_app.getBodyHeight($(document.body).height())");//注入自定义方法——获取webview高度的方法
super.onPageFinished(view, url);
}
});
2、调用已注入的js方法获取webview的高度
public static final String js2Android = "yxbl_app";
private int webViewHeight;
webView.loadUrl("https://www.youkuaiyun.com/");
webView.addJavascriptInterface(new WebViewJavaScriptFunction() {
@Override
public void onJsFunctionCalled(String tag) {
// TODO Auto-generated method stub
}
/**
* 高度
*/
@JavascriptInterface
public void getBodyHeight(String number) {
webViewHeight = Integer.parseInt(number.split("[.]")[0]);
Log.i("lgqqqqq====== ", "webViewHeight" + webViewHeight);
Message msg = new Message();
msg.what = 1;
handler.sendMessage(msg);//用activity中的handler发送消息
}
},js2Android);
3、设置webView高度
@SuppressLint("HandlerLeak")
private Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
switch(msg.what){
case 1 :
LinearLayout.LayoutParams linearParams2 =(LinearLayout.LayoutParams)webView.getLayoutParams(); //取控件textView当前的布局参数
linearParams2.height = (int)(webViewHeight*getResources().getDisplayMetrics().density)/2;// 控件的高强制设成20
webView.setLayoutParams(linearParams2);
break;
}
}
};