没图没鸡脖,先看效果图
这个页面的引导层我采用自定义一个PopupWindow覆盖在外部,由于页面是沉浸式,然后在PopupWindow出现了没有全屏的现象,然后百度一番发现了这个方法:setClippingEnabled(false); 好的!设置好以后并没有什么卵用,然后检查,
设置外层pop宽高:
this.setWidth(ScreenUtils.getScreenWidth(context));
this.setHeight(ScreenUtils.getScreenHeight(context));
好的!问题仍然存在!
最后换了个Pop show的方法:
原来:popupWindow.showAsDropDown(view,0,0);
修改成:popupWindow.showAtLocation(view,Gravity.NO_GRAVITY,0,0);
这下就行了。顺便做个关于dialog全屏标记:
Dialog添加:
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT) {
dialog.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
} else {
dialog.getWindow().setFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS, WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
dialog.getWindow().setFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION, WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
}
另外在没有使用自定义pop的时候,无法全屏的问题也用下面这个方法处理过:
public static void fitPopupWindowOverStatusBar(PopupWindow mPopupWindow, boolean needFullScreen) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { try { Field mLayoutInScreen = PopupWindow.class.getDeclaredField("mLayoutInScreen"); mLayoutInScreen.setAccessible(needFullScreen); mLayoutInScreen.set(mPopupWindow, needFullScreen); } catch (NoSuchFieldException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } } }