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