Android判断NavigationBar是否显示的方法(获取屏幕真实的高度)

发布时间 - 2026-01-10 22:21:37    点击率:

有些时候,我们需要知道当前手机上是否显示了NavigationBar,也就是屏幕底部的虚拟按键。

比如截屏的时候,要获取屏幕的高度,必须包括NavigationBar的高度。

试过网上的多种方法,但是对那种可以通过手势来显示/隐藏的NavigationBar没办法,最后终于找到了一个好办法,看代码:

public boolean isNavigationBarShow(){
  if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
    Display display = getWindowManager().getDefaultDisplay();
    Point size = new Point();
    Point realSize = new Point();
    display.getSize(size);
    display.getRealSize(realSize);
    return realSize.y!=size.y;
  }else {
    boolean menu = ViewConfiguration.get(this).hasPermanentMenuKey();
    boolean back = KeyCharacterMap.deviceHasKey(KeyEvent.KEYCODE_BACK);
    if(menu || back) {
      return false;
    }else {
      return true;
    }
  }
}
public static int getNavigationBarHeight(Activity activity) {
  if (!isNavigationBarShow(activity)){
    return 0;
  }
  Resources resources = activity.getResources();
  int resourceId = resources.getIdentifier("navigation_bar_height",
      "dimen", "android");
  //获取NavigationBar的高度
  int height = resources.getDimensionPixelSize(resourceId);
  return height;
}
public static int getSceenHeight(Activity activity) {
  return activity.getWindowManager().getDefaultDisplay().getHeight()+getNavigationBarHeight(activity);
}

具体代码可以参考Bigbang项目的ViewUtil中的处理。

以上所述是小编给大家介绍的Android判断NavigationBar是否显示的方法(获取屏幕真实的高度),希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!


# android  # navigationbar  # Android 沉浸式状态栏与隐藏导航栏实例详解  # Android编程中沉浸式状态栏的三种实现方式详解  # Android NavigationBar问题处理的方法  # Android之沉浸式状态栏的实现方法、状态栏透明  # Android实现沉浸式导航栏实例代码  # Android隐藏和沉浸式虚拟按键NavigationBar的实现方法  # 小编  # 在此  # 没办法  # 可以通过  # 给大家  # 试过  # 机上  # 所述  # 给我留言  # 好办法  # 感谢大家  # 疑问请  # 有任何  # 找到了  # 网上  # Display  # VERSION_CODES  # VERSION  # SDK_INT  # gt 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: JavaScript如何实现音频处理_Web Audio API如何工作?  laravel怎么配置和使用PHP-FPM来优化性能_laravel PHP-FPM配置与性能优化方法  Laravel API资源(Resource)怎么用_格式化Laravel API响应的最佳实践  微信小程序 wx.uploadFile无法上传解决办法  laravel怎么配置Redis作为缓存驱动_laravel Redis缓存配置教程  JavaScript中如何操作剪贴板_ClipboardAPI怎么用  专业商城网站制作公司有哪些,pi商城官网是哪个?  EditPlus 正则表达式 实战(3)  高防服务器租用如何选择配置与防御等级?  Laravel怎么配置S3云存储驱动_Laravel集成阿里云OSS或AWS S3存储桶【教程】  夸克浏览器网页跳转延迟怎么办 夸克浏览器跳转优化  悟空识字如何进行跟读录音_悟空识字开启麦克风权限与录音  EditPlus中的正则表达式实战(6)  免费视频制作网站,更新又快又好的免费电影网站?  如何快速搭建支持数据库操作的智能建站平台?  Laravel如何实现API版本控制_Laravel API版本化路由设计策略  JS中对数组元素进行增删改移的方法总结  阿里云高弹*务器配置方案|支持分布式架构与多节点部署  Laravel怎么做缓存_Laravel Cache系统提升应用速度的策略与技巧  Laravel如何实现邮件验证激活账户_Laravel内置MustVerifyEmail接口配置【步骤】  QQ浏览器网页版登录入口 个人中心在线进入  Laravel怎么配置自定义表前缀_Laravel数据库迁移与Eloquent表名映射【步骤】  香港服务器网站卡顿?如何解决网络延迟与负载问题?  极客网站有哪些,DoNews、36氪、爱范儿、虎嗅、雷锋网、极客公园这些互联网媒体网站有什么差异?  如何快速生成可下载的建站源码工具?  教学论文网站制作软件有哪些,写论文用什么软件 ?  Laravel如何使用.env文件管理环境变量?(最佳实践)  Laravel如何部署到服务器_线上部署Laravel项目的完整流程与步骤  Linux后台任务运行方法_nohup与&使用技巧【技巧】  Win11怎么设置默认图片查看器_Windows11照片应用关联设置  js代码实现下拉菜单【推荐】  如何用虚拟主机快速搭建网站?详细步骤解析  香港服务器WordPress建站指南:SEO优化与高效部署策略  rsync同步时出现rsync: failed to set times on “xxxx”: Operation not permitted  软银砸40亿美元收购DigitalBridge 强化AI资料中心布局  如何在阿里云ECS服务器部署织梦CMS网站?  怎么用AI帮你为初创公司进行市场定位分析?  Laravel DB事务怎么使用_Laravel数据库事务回滚操作  浅谈Javascript中的Label语句  Laravel如何实现图片防盗链功能_Laravel中间件验证Referer来源请求【方案】  Python企业级消息系统教程_KafkaRabbitMQ高并发应用  Laravel如何使用Vite进行前端资源打包?(配置示例)  Laravel如何配置中间件Middleware_Laravel自定义中间件拦截请求与权限校验【步骤】  Laravel如何优雅地处理服务层_在Laravel中使用Service层和Repository层  焦点电影公司作品,电影焦点结局是什么?  如何用低价快速搭建高质量网站?  如何快速查询网址的建站时间与历史轨迹?  mc皮肤壁纸制作器,苹果平板怎么设置自己想要的壁纸我的世界?  Python并发异常传播_错误处理解析【教程】  JavaScript如何实现继承_有哪些常用方法