最近在寫公司項目的時候使用popupwindow進行條件篩選,還是像以前一樣直接使用popupwindow.showAsDropDown(view)方法進行設置popupwindow的顯示位置,結果popupwindow沒有顯示在view下面,而是鋪滿了整個屏幕。
然後經過多次更換手機調試效果,反應出來的是7.0以前的版本使用popupwindow.showAsDropDown(view)顯示沒有問題,7.0以後的都會鋪滿整個屏幕(如圖)。
然後使用另一個方法popupwindow.showAtLocation(parent,gavity,x,y),結果y方向的偏移量上出現了問題,同樣的高度,有的手機剛剛好,有的手機卻偏移的太多,如圖:
在網上查看發現是應爲popupwindow的高度太高導致的鋪滿屏幕,那麼就要在顯示popupwindow的時候重新設置其高度就沒有問題了,解決辦法如下:
重寫popupwindow的showAsDropDown方法即可
@Override public void showAsDropDown(View anchor) { if (Build.VERSION.SDK_INT >= 24) { Rect rect = new Rect(); anchor.getGlobalVisibleRect(rect);// 以屏幕 左上角 爲參考系的 int h = anchor.getResources().getDisplayMetrics().heightPixels - rect.bottom; //屏幕高度減去 anchor 的 bottom setHeight(h);// 重新設置PopupWindow高度 } super.showAsDropDown(anchor); }
這樣就完美解決了