在Android 7.0隐藏导航栏和状态栏的一些方法

本文介绍了在Android 7.0下如何隐藏导航栏和状态栏,避免布局拉伸。通过设置View的SYSTEM_UI_FLAG_*标志,如View.SYSTEM_UI_FLAG_FULLSCREEN和View.SYSTEM_UI_FLAG_HIDE_NAVIGATION,可以实现隐藏。同时,为了解决滑动手势恢复导航栏问题,添加SYSTEM_UI_FLAG_IMMERSIVE_GESTURE_ISOLATED标志,但此方法仅适用于MTK平台。此外,对于弹出对话框时状态栏显示的问题,需要修改Window参数以保持全屏状态。
摘要由CSDN通过智能技术生成

--- by Blue.Wu


背景:近期笔者在某款app时,需求要对导航栏(返回,home键,recent键的那部分)进行隐藏,此外还要做相关操作的屏蔽避免导航栏恢复显示。原本的方案是通过发广播给system ui,在system ui做remove导航栏的操作实现。后来架构设计阶段评估该方案对于外部模块的耦合太强,因此希望对方案进行优化,要求只在app自身做改动就可以实现。经过一番折腾完成之后,特将一些心得整理出来供参考。

 

心得1. 如何在不拉伸主要显示区域情况下,隐藏导航栏和状态栏。

笔者原本采用如下代码实现隐藏效果:

View decorView = activity.getWindow().getDecorView();

           decorView.setSystemUiVisibility(

View.SYSTEM_UI_FLAG_LAYOUT_STABLE                        |View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION

                        |View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN

                        |View.SYSTEM_UI_FLAG_HIDE_NAVIGATION

                        | View.SYSTEM_UI_FLAG_FULLSCREEN

                        |View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY);

实践后发现虽然能实现隐藏状态栏和导航栏,但会出现原有显示区域的布局被拉伸的情况。这与我们的要求不相符,详细研究ViewsetSystemUiVisibility方法可以传入的flag的含义和用法如下:

   1. View.SYSTEM_UI_FLAG_VISIBLE:显示状态栏,Activity不全屏显示(恢复到有状态的正常情况)

   2. View.INVISIBLE:隐藏状态栏,同时Activity

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值