这几天做项目碰见的坑,界面需要ScrollView包含ViewPager,ViewPager某一项为webView
有过相同项目经历的应该都知道,webView设置成自适应或者充满布局都不行,只能在ViewPager中滑动。所以我们可以设置Viewpager的高度,可是怎么获得webView的高度呢。百度N多方法 设置高度无效,直接上代码
public void refresh(String url) {
//设置外层高度
final View parentView = (View) web.getParent();
web.getSettings().setJavaScriptEnabled(true);
web.addJavascriptInterface(new HeightGetter(parentView), "jo");
web.setWebViewClient(new WebViewClient() {
public boolean shouldOverrideUrlLoading(WebView view, String url) {
return false;
}
public void onPageFinished(WebView view, String url) {
web.loadUrl("javascript:window.jo.run(document.documentElement.scrollHeight+'');");
}
});
if (!UtilMethod.isNull(url)) {
web.loadUrl(url);
}
}
private class HeightGetter {
private final View parentView;
public HeightGetter(View parentView) {
this.parentView = parentView;
}
@JavascriptInterface
public void run(final String height) {
activity.runOnUiThread(new Runnable() {
public void run() { //获取到的高度 转换为dp
parentView.setLayoutParams(new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, UtilMethod.dp2px(activity, Integer.valueOf(height))));
}
});
}
}