android 获取webView高度,设置webView高度
16lz
2021-01-25
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; } }};
更多相关文章
- android webview js 交互
- Android弹出菜单的灵活运用(自定义AlertDialog)
- Android(安卓)TableLayout
- 【Android(安卓)多媒体开发】 MediaPlayer 状态机 接口 方法 解
- Android启动流程简析(三)
- Android:Android(安卓)Studio 优化
- android 画图之bitmap(一)
- Android(安卓)app ERR_UNKNOWN_URL_SCHEME
- Android之Handler的postDelayed()方法的用法