在Android 7.0以上PopupWindow.showAsDropDown()不起作用问题

最近优化界面,调用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

posted @ 2019-05-22 16:20  WidgetBox  阅读(2558)  评论(0编辑  收藏  举报