android 7.0 之 Popupwindow

Popupwindow现在已经与我们的开发息息相关,弹框之类的效果 大部分与之有关。
今天就说说 7.0 版本与之前版本的差别

android 7.0 之 Popupwindow_第1张图片
459DADFB-E13B-46DE-8D06-F5754178C8D0.png

7.0版本之前这样使用时没有问题 但7.0做了一些修改 popupwindow 设置宽 高 设置为为match_parent, 显示位置就总是在屏幕最上方覆盖整个屏幕,而不是在view的下方,看源码
android 7.0 之 Popupwindow_第2张图片
83DEBB75-F735-40B2-AAF7-001CCBAEB08E.png

下面上几张图 对比下
6.0版本:
android 7.0 之 Popupwindow_第3张图片
device-2016-12-23-101745.png

7.0版本:
android 7.0 之 Popupwindow_第4张图片
device-2016-12-23-102001.png

通过查看文档 发现这个方法可以解决
android 7.0 之 Popupwindow_第5张图片
0BEED137-A447-4BFE-8EBB-0A80518FF125.png

因此我做了以下判断
android 7.0 之 Popupwindow_第6张图片
C3F0D947-C0C9-4407-AFA8-FDD86FAE31FB.png

主要是这个方法
popupWindow.showAtLocation(mView, Gravity.NO_GRAVITY, 0, mView.getHeight() + statusBarHeight1);
看最后一个参数也就是Y的值
我通过获取状态栏的尺寸,方法:
int statusBarHeight1 = -1;
//获取status_bar_height资源的
IDint resourceId =mContext.getResources().getIdentifier("status_bar_height", "dimen", "android");
if (resourceId > 0) {
//根据资源ID获取响应的状态栏尺寸 statusBarHeight1 = mContext.getResources().getDimensionPixelSize(resourceId);
}
然后再加上view的高度
就完美解决这个问题了
项目地址: https://github.com/Johnjson/PopWindow

你可能感兴趣的:(android 7.0 之 Popupwindow)