您的位置:首页 > 移动开发 > Android开发

android Navigator的高度计算和判断是否显示

2015-06-04 08:50 369 查看
进入互联网行业几天了, 从手机行业转到互联网行业也在慢慢的适应: 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;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: