如何解决popuwindow侵入状态栏/底部留白边的问题

释放双眼,带上耳机,听听看~!
问题描述

最近我在使用popuwindow发现popuwindow会侵入到底部的虚拟按键内,我想通过判断是否显示了虚拟按键,来控制 popupWindow.showAtLocation() y轴的高度,如果有虚拟按钮就增加y轴高度,如果没有y = 0。想象很美好,现实很残酷,结果华为的机子(P20)就出现了问题(此时的虚拟按钮是不显示的状态),底部位子出现了白边,没有完全的覆盖住全屏。各种百度/goodle搜索出来的结果,都无法完全准确的判断虚拟按键是否显示或者隐藏。

解决问题思路

既然会出现这样的情况,不如我们直接获取整个手机的高度,直接赋值给PopupWindow,然后获取最底层View动态设置marginBottom为虚拟按钮的高度
部分代码展示

        popupWindow = new PopupWindow(view, ViewGroup.LayoutParams.MATCH_PARENT,  ScreentUtil.getInstance().getRealHeight(mContext), true);
        popupWindow.setAnimationStyle(R.style.PowuWindwnFromBottomTTop);
        if (Build.VERSION.SDK_INT > 21) {
            //sdk > 21 解决 标题栏没有办法遮罩的问题
            popupWindow.setClippingEnabled(false);
        }
      //设置最底部的view设置一个marginBottom
        ConstraintLayout constraintLayout = view.findViewById(R.id.constra_popuwindow_shapre_parent);
        ConstraintLayout.LayoutParams layoutParams = (ConstraintLayout.LayoutParams) constraintLayout.getLayoutParams();
        layoutParams.bottomMargin = ScreentUtil.getInstance().getVirtualBarHeight(mContext);//这里是虚拟按钮的高度
        constraintLayout.setLayoutParams(layoutParams);

如何获取屏幕的真实高度/虚拟按键的高度,各自自行百度一下

我目前就想到的是这样的解决方案

 

人已赞赏
Android文章

Android自定义View 雷达扫描效果

2019-10-22 15:01:40

Android文章

Android 梯形TextView

2019-10-23 13:37:16

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索