1. 程式人生 > >Android 7.0 popupwindow位置問題

Android 7.0 popupwindow位置問題

我們在Android開發中經常會使用到PopupWindow來顯示內容,在Android7.0以前。

//    定義一個PopupWindow變數,並設定寬、高
    PopupWindow popupWindow = new PopupWindow(mWidth, mHeight);
    popupWindow.setFocusable(true);
    //    在某個控制元件下方彈出
    popupWindow.showAsDropDown(anchorView);
在7.0中這裡的寬和高如果設定得過大,彈出的PopupWindow會覆蓋當前的視窗而覆蓋整個手機螢幕,並不是在anchorView的下方彈出來。 

因此,為了解決這個問題,我們可以換一種方式來彈出PopupWindow。
  //    定義一個PopupWindow變數,並設定寬、高
    PopupWindow popupWindow = new PopupWindow(mWidth, mHeight);
    popupWindow.setFocusable(true);
    //    在某個控制元件下方彈出
  popupWindow.showAtLocation(anchorView,Gravity.LEFT,0,mNotificationBarHeight+anchorView.getHeight());

這裡使用showAtLocation()來彈出PopupWindow,注意設定好x、y的偏移量(x、y預設值是0,即父視窗的左上角)。