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

本文介绍了一种解决Android应用中popupwindow显示menu时底部navigator与确定按钮重叠问题的方法,包括判断navigator的高度和是否显示,并在popupwindow.showAtLocation调用时进行y坐标位移。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

进入互联网行业几天了, 从手机行业转到互联网行业也在慢慢的适应: 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;
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值