Android开发UI之隐藏导航栏

前言

这一篇我们将讲解:

  • 1.在4.0及以上版本中隐藏导航栏
  • 2.让内容显示在导航栏之后

导航栏进行隐藏,这个特性是Android 4.0版本中引入的。
即便本篇关注如何隐藏导航栏,但是在实际的开发中,你最好让状态栏与导航栏同时消失。在保证导航栏易于再次访问的情况下,隐藏导航栏与状态栏使内容区域占据了整个显示空间,因此提供了一个更加沉浸式的用户体验。

在4.0及以上版本中隐藏导航栏

你可以在Android 4.0以及以上版本,使用SYSTEM_UI_FLAG_HIDE_NAVIGATION标志来隐藏导航栏。代码如下:

View decorView = getWindow().getDecorView();
// Hide both the navigation bar and the status bar.
// SYSTEM_UI_FLAG_FULLSCREEN is only available on Android 4.1 and higher, but as
// a general rule, you should design your app to hide the status bar whenever you
// hide the navigation bar.
int uiOptions = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION| View.SYSTEM_UI_FLAG_FULLSCREEN;
decorView.setSystemUiVisibility(uiOptions);

注意以下几点:

  • 1.使用这个方法时,触摸屏幕的任何一个区域都是使导航栏(与状态栏)重新显示。用户的交互使这个标志SYSTEM_UI_FLAG_HIDE_NAVIGATION被清除
  • 2.一旦这个标志被清除了,如果你想再次隐藏导航栏,你就需要重新对这个标志进行设定。
  • 3.在不同的地方设置UI标签是有所区别的。如果你在activity的onCreate()方法中隐藏系统栏,当用户按下home键系统栏就会重新显示。当用户再重新打开activity的时候,onCreate()不会被调用,所以系统栏还会保持可见。如果你想让在不同activity之间切换时,系统UI保持不变,你需要在onReasume()与onWindowFocusChaned()里设定UI标签。
  • 4.setSystemUiVisibility()仅仅在被调用的View显示的时候才会生效。
  • 5.当从View导航到别的地方时,用setSystemUiVisibility()设置的标签会被清除。

让内容显示在导航栏之后

在Android 4.1与更高的版本中,你可以让应用的内容显示在导航栏的后面,这样当导航栏展示或隐藏的时候内容区域就不会发生布局大小的变化。可以使用SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION标志来做到这个效果。同时,你也有可能需要SYSTEM_UI_FLAG_LAYOUT_STABLE这个标志来帮助你的应用维持一个稳定的布局。

当你使用这种方法的时候,就需要你来确保应用中特定区域不会被系统栏掩盖。

Android开发UI之隐藏导航栏相关推荐

  1. Android M App 永久隐藏导航栏的Solution

    做项目,客户要求在App 中隐藏导航栏.这个比较简单,网上资料一大把. 现做下笔记. Android 隐藏导航栏, 有好几种办法: 1)修改系统级代码,使系统具有隐藏导航栏的功能: 这种实现方法可以参 ...

  2. Android 更改导航栏颜色及隐藏导航栏

    隐藏导航栏 Window window = getWindow();window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LA ...

  3. [RK3568 Android11] 开发之系统永久隐藏导航栏

    目录 一.隐藏导航栏方法 1.方法一:设置导航栏宽度为0dp 2.方法二:添加Android系统属性

  4. 关于Android系统隐藏导航栏的两种方法

    关于Android系统隐藏导航栏的两种方法 在NXP的imx6q和全志的A40I上试过 1.frameworks/base/core/res/res/values/dimens.xml中修改 < ...

  5. Android实现隐藏导航栏

    在MainActivity上重载 onWindowFocusChanged 并填入相关内容隐藏android导航栏 /** 隐藏导航栏* */@Overridepublic void onWindow ...

  6. iOS开发中隐藏导航栏的分割线

    iOS开发中经常会遇到需要隐藏导航栏的分割线的需求,之前已经有两种方法 方法一 直接设置navigationBar的ShadowImage和BackgroundImag,这样做可以一劳永逸,在当前导航 ...

  7. Android 隐藏导航栏

    因为项目需要, 要实现屏幕全屏,隐藏虚拟按键,即导航栏  SYSTEM_UI_FLAG_LOW_PROFILE 相当于隐藏导航栏  SYSTEM_UI_FLAG_VISIBLE         导航栏 ...

  8. [RK3568 Android11] 开发之系统动态隐藏导航栏(一)

    目录 前言 一.创建全局变量 二.设置应用添加隐藏导航栏按钮 三.添加按钮功能

  9. android 电话 状态栏,Android透明式状态栏、导航栏实现

    有很多应用有透明式状态栏.导航栏,表现形式是在不同页面里,状态栏可以与最上面的背景图片或者颜色保持一致.典型的案例就是手Q:(如图所示) 很明显,在手Q中主要的几个页面的标题栏(ActionBar位置 ...

最新文章

  1. mysql表名不区分大小写_设置mysql表名不区分大小写
  2. RocketMQ(一):Linux安装RocketMQ和常用命令
  3. linux c 进程策略 优先级,当两个线程拥有相同优先级时,linux c的线程调度策略问题...
  4. expressjs如何做mysql注入_Node.js+Express+Mysql 实现增删改查
  5. 蚂蚁S9矿卡ddr型号确认方法
  6. Maven Jetty Plugin 配置指南(翻译)[转]
  7. 20200202每日一句
  8. 空间留言软件_锦州教育智慧云平台登录个人空间
  9. java进行微信公众号开发
  10. orcale和mysql跨库查询_Oracle如何实现跨库查询
  11. 【VMware vSphere】Veeam备份
  12. 苹果bundle id是什么?
  13. 电脑快捷方式图标变白解决方案
  14. find函数的使用方法Matlab,matlab中find函数的使用说明——emily语法介绍
  15. iOS开发一路走来看到,好奇,好玩,学习的知识点记录
  16. CAN总线学习心得:zlg关于can帖子汇总【转】【强烈推荐】
  17. error: resource style/Theme.AppCompat.Light.NoActionBar
  18. AS3加载外部swf资源库中的元件(MovieClip)
  19. 通灵学院|游戏设计研习8:游戏空间设计★(800字)
  20. 2021年G2电站锅炉司炉考试报名及G2电站锅炉司炉试题及解析

热门文章

  1. MestReNova for Mac中文版(核磁数据处理软件) v14.2.3有哪些改进?
  2. 动态规划生产存储matlab,动态规划方法的matlab实现及其应用
  3. JavaSEday04
  4. vue js数字转换成汉字展示
  5. 算法题:1000个苹果和10个箱子
  6. swagger 集成后发布到服务器报错[Could not find file 'D:\\home\\site\\wwwroot\\bin\\WebAPI.XML]...
  7. 微信小程序的一键拨打电话,wx.makePhoneCall接口
  8. 如何组建优秀的APP开发团队
  9. Unity 初识:SkyBox(天空盒)
  10. 【每天更新】2022年最新WordPress主题下载,外贸独立站商城/企业网站/个人博客模板 2022-5-16