android——暴力隐藏底部导航栏

来源:互联网 发布:手机桌面特效软件 编辑:程序博客网 时间:2024/06/07 20:01

最近在做平板项目,boss要求隐藏掉底部导航栏,各种谷歌百度了半天,可愁死我了。因为导航栏是系统自带的,要实现隐藏要么修改framwork层代码,要么想点别的招。本宝菜鸟一只,哪里会啥修改framwork层代码啊,愁…

度娘也说了,想要隐藏,可以设置全屏,但是这种方案有个问题,就是手指一旦在底部进行上滑操作导航栏就显示出来,并不是我想要的效果。如果导航栏一旦显示,能够立即把它隐藏掉就好了。啊呀,开始百度,嗖嗖嗖嗖嗖,终于找到了——http://blog.csdn.net/u014583590/article/details/55263141

先上代码:

// onCreate()里面加上监听var mHeight = 0 val content = findViewById(android.R.id.content)       content.getViewTreeObserver().addOnGlobalLayoutListener(ViewTreeObserver.OnGlobalLayoutListener {            Log.e("eeeee", "界面有调整")            if (content.height != mHeight) {                hideNavigationBar() // 隐藏导航栏                Log.e("eeeeee", content.height.toString())                if (mHeight == 0) {                    mHeight = content.height                }            }        })// 注意取消监听 override fun onDestroy() {        super.onDestroy()        content.getViewTreeObserver().removeOnGlobalLayoutListener(this)    }

利用OnGlobalLayoutListener监听,当界面高度变化时,则隐藏底部导航栏。最后别忘记移除监听,防止内存泄漏。

每个界面都开启监听,真是很耗资源,木得办法,玩不了源码高大上,只是用用粗暴的办法。

具体代码放在:https://github.com/jjjSilence/jjjPlus 的DayNightModeActivity下