沉浸式状态栏页面popupwindow全屏处理

没图没鸡脖,先看效果图

先看效果图

这个页面的引导层我采用自定义一个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();
        }
    }
}

 

 

 

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值