一个activity里有四个fragment,通过底部四个tab按钮来切换fragment,第一个fragment是用原生代码实现,第二第三个fragment布局文件里有个webview布局,加载网页。由第一个fragment切换至第二个fragment时候会发现第二个webview加载完网页后高度变低,就是安卓机页面顶部黑色栏变高。
这个webview不是安卓自带的,是使用的crosswalk的XWalkviewInternal实现的。个人觉得在这里跟自带的webview一样解决方案。
解决方法就是在有webview的fragment的onCreateView方法里在加载网页之前重新设置一下webview的高度 代码如下
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
ctx = this.getActivity();
layout = inflater.inflate(R.layout.fragment_message, null);
mXWalkView = (XWalkViewInternal) layout.findViewById(R.id.xwalkview);
XWalkSettings webSettings = mXWalkView.getSettings();
XWalkPreferences.setValue(XWalkPreferences.REMOTE_DEBUGGING, true);
webSettings.setJavaScriptEnabled(true);
Display display = ctx.getWindowManager().getDefaultDisplay();
if (display.getHeight() < display.getWidth()) {
screenHeight = display.getWidth();
screenWidth = display.getHeight();
} else {
screenWidth = display.getWidth();
screenHeight = display.getHeight();
}
mXWalkView.setLayoutParams(new LinearLayout.LayoutParams(screenWidth, screenHeight));
mXWalkView.addJavascriptInterface(new JSInterface(mXWalkView, getActivity()),"JSBridge");
mXWalkView.load(Contants.PrefixUrl+"message/list", null);
return layout;
}