通过阅读源码在 phonestatusbar 的 makeStatusBarView 存在以下方法:
boolean showNav = mWindowManagerService.hasNavigationBar();
可以得知,是否隐藏导航栏,是根据 showNav 来判断,而 showNav 的值又是来自 mWindowManagerService 的 hasNavigationBar 方法。
继续跟踪:
final WindowManagerPolicy mPolicy = new PhoneWindowManager();
public boolean hasNavigationBar() {
return mPolicy.hasNavigationBar();
}
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;
}
所以隐藏导航栏有两种方法,一种是在 config文件下修改 config_showNavigationBar 的值为false;
另一种是设置属性变量 qemu.hw.mainkeys 为 1.