动态修改WebView高度
参考网上的一些方法,写js接口供H5调用
public class AndroidJsInterface {
/**
* 设置webview高度
*
* @param param
*/
@JavascriptInterface
public void setWebviewHeight(String param) {
try {
final int height = Integer.parseInt(param.split("[.]")[0]);
webView.post(new Runnable() {
@Override
public void run() {
LinearLayout.LayoutParams linearParams = (LinearLayout.LayoutParams) webView.getLayoutParams();
linearParams.height = (int) (height * context.getResources().getDisplayMetrics().density) + 5;
webView.setLayoutParams(linearParams);
}
});
} catch (Exception e) {
e.printStackTrace();
}
}
}
AndroidJsInterface androidJs = new AndroidJsInterface(this, menuWebview);
webView.addJavascriptInterface(androidJs, "android");
可以在页面js中调用。
window.android.setWebviewHeight("100");
也可以在WebView onPageFinished方法中注入js直接调用,以便在加载完页面就能将webView高度自适应。
webView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
@Override
public void onPageFinished(WebView view, String url) {
menuWebview.loadUrl("javascript:window.android.setWebviewHeight($(document.body).height())");
super.onPageFinished(view, url);
}
});