美文网首页
处理虚拟导航栏遮挡界面问题

处理虚拟导航栏遮挡界面问题

作者: 电梯里漫舞 | 来源:发表于2024-05-07 15:59 被阅读0次

在开发中发现有些机型存在虚拟导航栏,会遮挡界面内容,需要进行处理
在工具类中:

 /** 判断系统是否写入了关于是否显示虚拟导航栏的相关变量,如果为true,表示有虚拟导航栏 **/
    public static boolean hasVirtualNavigationBar() {
        int id = Resources.getSystem().getIdentifier("config_showNavigationBar", "bool", "android");
        return id > 0 && Resources.getSystem().getBoolean(id);
    }

    /** 获取导航栏高度 **/
    public static int getNavigationBarHeight() {
        int navigationBarHeight = 0;
        int resourceId = Resources.getSystem().getIdentifier("status_bar_height", "dimen", "android");
        if (resourceId > 0) {
            navigationBarHeight = Resources.getSystem().getDimensionPixelSize(resourceId);
        }
        return navigationBarHeight;
    }

在fragment中使用工具类:

 @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup parent, Bundle savedInstanceState) {
         mainView = inflater.inflate(R.layout.fragment_menu_list, parent, false);
        //...其它代码
        fixNavigationBar(mainView);
        return mainView;
   }

 private void fixNavigationBar(View rootLayout) {
        if (hasVirtualNavigationBar()){
            rootLayout.setPadding(rootLayout.getPaddingLeft(),
                    rootLayout.getPaddingTop(),
                    rootLayout.getPaddingRight(),
                    rootLayout.getPaddingBottom() + ScreenUtil.getNavigationBarHeight());
        }
  }

相关文章

网友评论

      本文标题:处理虚拟导航栏遮挡界面问题

      本文链接:https://www.haomeiwen.com/subject/fpzrfjtx.html