如何解决popuwindow侵入状态栏/底部留白边的问题
2019-10-22 本文已影响0人
一个冬季
问题描述
最近我在使用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);
如何获取屏幕的真实高度/虚拟按键的高度,各自自行百度一下
我目前就想到的是这样的解决方案