popuwindow 7.0适配问题

来源:互联网 发布:网络清算支付平台 编辑:程序博客网 时间:2024/06/07 04:01

项目中适配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;效果都一样,但必须填写。

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

原创粉丝点击