android之适配华为手机手势导航方式

本文详细解析了华为EMUI系统中虚拟导航栏在采用手势导航后仍显示为可见状态的Bug,并提供了一种通过检查虚拟导航栏背景View的可见性来判断其实际状态的解决方案。

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

高仿滴滴首页滑动布局

做这个的时候需要计算出首页底部布局距离顶部的高度,要把虚拟导航栏高度算在里面

但是发现了一个华为的奇葩bug,华为emui系统的系统导航里可以选手势导航和虚拟导航等方式

选用手势导航后,下面的虚拟导航栏虽然没了

但是代码里获取虚拟导航栏仍显示show,而且高度仍在,不为0

在别的小米ov手机上,开启全面屏导航方式后,导航栏高度获取都是0

原因定位到了,但是解决是痛苦的,想着华为肯定有官方适配方案,结果呵呵...

最后解决方案

/**
     * 虚拟按键是否可见
     *
     * @param activity activity
     * @return 
     */
    public static boolean isNavigationBarShow(Activity activity) {
        
        //虚拟键的view,为空或者不可见时是隐藏状态
        View view = activity.findViewById(android.R.id.navigationBarBackground);
        if (view == null) {
            return false;
        }
        int visible = view.getVisibility();
        if (visible == View.GONE || visible == View.INVISIBLE) {
            return false;
        } else {
            return true;
        }
    }

通过虚拟导航栏的系统id来拿到view,再通过view去判断当前虚拟导航栏是否可见

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值