最近在隐藏一个导航栏遇到的一个坑,在这里记录下。但愿其余人有看到的,也能够避免入坑。java
在平常的开发工做中,有时常常会要显示或者隐藏导航栏,通常这时是经过以下配置项来处理:android
frameworks/base/core/res/res/values/config.xml
<bool name="config_showNavigationBar">false</bool>
复制代码
这里能够经过将config_showNavigationBar设置为false或者true来达到隐藏或者显示导航栏的效果。微信
但有时这样配置并不生效,即设置为false的时候,导航栏仍然存在,这就可能一个属性在做怪了。ide
咱们先看下决定导航栏显示与否的关键代码:this
frameworks/base/services/core/java/com/android/server/policy/PhoneWindowManager.java
public void setInitialDisplaySize(Display display, int width, int height, int density) {
....
mHasNavigationBar = res.getBoolean(com.android.internal.R.bool.config_showNavigationBar);
// Allow a system property to override this. Used by the emulator.
// See also hasNavigationBar().
String navBarOverride = SystemProperties.get("qemu.hw.mainkeys");
if ("1".equals(navBarOverride)) {
mHasNavigationBar = false;
} else if ("0".equals(navBarOverride)) {
mHasNavigationBar = true;
}
....
复制代码
} 看到这里,就明白,当系统中存在属性【qemu.hw.mainkeys】时,config_showNavigationBar这个配置就无效了,由于它会被【qemu.hw.mainkeys】的值重写。qemu.hw.mainkeys的值定义以下;spa
qemu.hw.mainkeys = 0;//mHasNavigationBar为true,显示导航栏
qemu.hw.mainkeys = 1;//mHasNavigationBar为false,隐藏导航栏
复制代码
若是文章存在错误描述,可直接留言,一块儿探讨!code
我在微信公众号也有写文章,更新比较及时,有兴趣者能够关注以下公众号!cdn