標籤:android popupwindow navigator
進入互連網行業幾天了, 從手機行業轉到互連網行業也在慢慢的適應: IDE工具的使用(之前一直在Ubuntu 命令列進行開發), 版本管理工具,代碼架構等等這些都需要重新適應。 好在本人還有一些底子,所以適應起來還算快^_^. 今天就從昨天遇到的一個小問題開始分享
先
,在使用popupwindow顯示menu時, 底部navigator與確定按鈕重疊。
解決此問題思路就是判斷底部navigator是否已經開啟, 如果開啟則計算navigator的高度, 然後在調用popupwindow.showAtLocation時, 將y座標做位移navigator的高度
具體方法可以看下面兩個方法: 分別是判斷navigator的高度和navigator是否顯示---mcoy是本人的英文名稱^_^
/**
* add by mcoy for bugID=427
* @return 底部狀態列的高度
*/
private int getNavigationBarHeight() {
if(!hasSoftKeys((WindowManager) context.getSystemService(Context.WINDOW_SERVICE))){
return 0;
}
Resources resources = context.getResources();
int resourceId = resources.getIdentifier("navigation_bar_height","dimen", "android");
int height = resources.getDimensionPixelSize(resourceId);
Log.e("mcoy", "the height is " + height);
return height;
}
/**
* add by mcoy for bugID=427, 判斷底部navigator是否已經顯示
* @param windowManager
* @return
*/
private boolean hasSoftKeys(WindowManager windowManager){
Display d = windowManager.getDefaultDisplay();
DisplayMetrics realDisplayMetrics = new DisplayMetrics();
d.getRealMetrics(realDisplayMetrics);
int realHeight = realDisplayMetrics.heightPixels;
int realWidth = realDisplayMetrics.widthPixels;
DisplayMetrics displayMetrics = new DisplayMetrics();
d.getMetrics(displayMetrics);
int displayHeight = displayMetrics.heightPixels;
int displayWidth = displayMetrics.widthPixels;
return (realWidth - displayWidth) > 0 || (realHeight - displayHeight) > 0;
}
android Navigator的高度計算和判斷是否顯示