最近優化界面,調用PopupWindow.showAsDropDown()發現,窗口並無在控件下方顯示。ide
有網友說是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 }
發現屏幕下方有一塊空缺,沒有鋪滿整個屏幕,有網友說是由於ui
new MyPopupWindow(contentView, ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
初始化時設置了充滿屏幕,因此後面的位移就沒有了效果。spa
最終嘗試將PopupWindow的高度準確計算出來,再去調用showAsDropDown(),這樣就能實現了~ 最好不要重寫showAsDropDown啦!code
By LiYingblog