注入获取webView高度的js方法
activityBaseWebAddWebView.loadUrl("javascript:window.yxbl_app.getBodyHeight($(document.body).height())");
调用
public static final String js2Android = "yxbl_app";
private int webViewHeight;
activityBaseWebAddWebView.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 = Message.obtain(null, 6, 0, 0); Message msg = new Message(); msg.what = 1; msg.arg1 = webViewHeight; handler.sendMessage(msg); // ScrollView.LayoutParams linearParams =(ScrollView.LayoutParams) neili.getLayoutParams(); //取控件textView当前的布局参数 // //// linearParams.width = 40;// 控件的宽强制设成30 // linearParams.height =a/2;// 控件的高强制设成20 // // neili.setLayoutParams(linearParams); } @JavascriptInterface public void shareToApp(String title, String content, String imgUrl, String url) { } /** * 测试坐标上传是否成功 * * @param latitude * @param longitude */ @JavascriptInterface public void outLocation(String latitude, String longitude) { System.out.println("javascript输出:" + latitude + " " + longitude); } }, CommonString.js2Android);
设置webView高度
@SuppressLint("HandlerLeak") private Handler handler = new Handler() { @Override public void handleMessage(Message msg) { if (msg.what == 1) { LinearLayout.LayoutParams linearParams2 =(LinearLayout.LayoutParams) activityBaseWebAddWebView.getLayoutParams(); //取控件textView当前的布局参数 // linearParams.width = 40;// 控件的宽强制设成30 // linearParams2.height =webViewHeight*3;// 控件的高强制设成20 Logger.e(getResources().getDisplayMetrics().density + ""); linearParams2.height = (int)(webViewHeight*getResources().getDisplayMetrics().density)/2;// 控件的高强制设成20 activityBaseWebAddWebView.setLayoutParams(linearParams2); } } };