27
2017
09

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

最近在做平板项目,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下

上一篇:解决打包脚本在 Xcode9 环境下报错 下一篇:xshell无法在vim中用鼠标复制黏贴