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.csdn.net/"); 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; } } };