PopupWindow经常在项目中作为重量级弹层使用,最近在项目开发中发现7.0系统的showAsDropDown异常问题,在Android7.0以前,
// 定义一个PopupWindow变量,并设置宽、高
PopupWindow popupWindow = new PopupWindow(mWidth, mHeight);
popupWindow.setFocusable(true);
// 在某个控件下方弹出
popupWindow.showAsDropDown(anchorView);
在7.0中这里的宽和高如果设置得过大,弹出的PopupWindow会覆盖当前的视窗而覆盖整个手机屏幕,并不是在anchorView的下方弹出来。
因此,为了解决这个问题,有两种解决方案
方案一:我们可以换一种方式来弹出PopupWindow。
- 1
- 2
- 3
- 4
- 5
- 1
- 2
- 3
- 4
- 5
这里使用showAtLocation()来弹出PopupWindow,注意设置好x、y的偏移量(x、y默认值是0,即父窗口的左上角)。
方案二:
重写showAsDropDown(view)
,如下: