1、注入获取webView高度的js方法
webView.setWebViewClient(new WebViewClient() {@Overridepublic boolean shouldOverrideUrlLoading(WebView view, String url) { // view.loadUrl(url);return true;//true时,不可点击跳页效果,false时,可以点击跳页}@Overridepublic void onPageStarted(WebView view, String url, Bitmap favicon) {}@Overridepublic 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.csdn.net/");webView.addJavascriptInterface(new WebViewJavaScriptFunction() {@Overridepublic void onJsFunctionCalled(String tag) {// TODO Auto-generated method stub}/*** 高度*/@JavascriptInterfacepublic 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() {@Overridepublic 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;// 控件的高强制设成20webView.setLayoutParams(linearParams2);break;}} };