popuwindow 7.0适配问题

项目中适配7.0遇到一个这样的bug,如图
这里写图片描述

正常情况下,popuwindow应该显示在标题下面,也就是红色部分的popuwindow,但是在7.0上显示的确实绿色部分,显示在状态栏下面了,代码中设置popuwindow显示位置是这样设置的

 popupWindow.showAsDropDown(titleView);

这个titleView就是标题,即表示显示在标题下面,7.0以下没有问题,之后在stackOverflow上看到了这篇文章Android Nougat PopupWindow showAsDropDown(…) Gravity not working,才知道这是7.0的bug,google在以后的版本中会修复,但是目前的解决方法只能去判断手机系统版本

if (android.os.Build.VERSION.SDK_INT >=24) {
            int[] a ={30,30};
            titleView.getLocationInWindow(a);
            popupWindow.showAtLocation(((Activity) mContext).getWindow().getDecorView(), Gravity.NO_GRAVITY, 0 , a[1]+titleView.getHeight());
        } else{
            popupWindow.showAsDropDown(titleView);
        }

这段代码可以直接复制,替换掉titleView就行,代码中int数组里面的两个值,是必须要的,填写什么似乎没影响效果,测试输入30,80;30,30;80,30;80,80;效果都一样,但必须填写。

做了这个判断以后,就能正常显示了。

猜你喜欢

转载自blog.csdn.net/cdhahaha/article/details/76021351
今日推荐