Android7.0+popupwindow位置設置問題(showAsDropDown方法)

最近在寫公司項目的時候使用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);
}
這樣就完美解決了

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章