如何解决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);

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

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

你可能感兴趣的:(如何解决popuwindow侵入状态栏/底部留白边的问题)