最近优化界面,调用PopupWindow.showAsDropDown()发现,窗口并没有在控件下方显示。
有网友说是7.0以上系统的问题,可以自定义PopupWindow,重写showAsDropDown,如下
1 @Override 2 public void showAsDropDown(View anchor) { 3 if(Build.VERSION.SDK_INT >= 24) { 4 Rect rect = new Rect(); 5 anchor.getGlobalVisibleRect(rect); 6 int h = anchor.getResources().getDisplayMetrics().heightPixels - rect.bottom; 7 setHeight(h); 8 } 9 super.showAsDropDown(anchor); 10 }
发现屏幕下方有一块空缺,没有铺满整个屏幕,有网友说是因为
new MyPopupWindow(contentView, ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
初始化时设置了充满屏幕,所以后面的位移就没有了效果。
最终尝试将PopupWindow的高度准确计算出来,再去调用showAsDropDown(),这样就能实现了~ 最好不要重写showAsDropDown啦!
By LiYing