本文已参与「新人创作礼」活动,一起开启掘金创作之路。
前言
本文基于Android 4.X 编写,请注意
正文
android4.0以后添加了虚拟导航栏(NavigationBar)新特性,就是在手机和平板的屏幕下面添加了(Back返回键,Home键等),但是手机上都有硬性按键,所以我们有时间要去掉或者隐藏掉虚拟按键。
这些按键其实是button,是android原生自带的,我们可以通过config控制其开和关。对应的config项是:"config_showNavigationBar".
解决方法一:true------------>true和false控制开关。
不同的软件版本,配置文件修改不同,下面以android4.2版本为例。在源码frameworks层有两个 config.xml文件:
alps\frameworks\base\core\res\res\values\config.xml (1) 和
alps\mediatek\custom\project_name\resource_overlay\generic\frameworks\base\core\res\res\values\config.xml(2)
如果您的源码下只有文件 (1), 那就修改config.xml中的true
如果您的源码下只有文件 (1)和(2), 那就修改(2) 中config.xml的<bool name="config_showNavigationBar">true就行了。隐藏就设成false。
解决方法二:修改framework层NavigationBar显示boolean使其不在屏幕显示。
修改类位置:frameworks/base/policy/src/com/android/internal/policy/impl的PhoneWindowManager.java
修改方法:1.修改
public boolean hasNavigationBar(){
return mHasNavigationBar;
}
把hasNavigationBar()方法的返回值改成false就行了。
解决方法二修改过后,手机主屏幕下方会有一个黑色条条,建议使用方法一。
如果以上方法不行 按照下面的方法
在android\frameworks\base\packages\SystemUI\src\com\android\systemui\statusbar\tablet\ 下的TabletStatusBar.java的 addStatusBarWindow() 函数中
WindowManagerImpl.getDefault().addView(sb, lp); 这句话是就是在把sb 加入到window中 屏蔽掉这句就行了
或者WindowManagerImpl.getDefault().removeView(sb); 也可以移除 其中sb就是 SystemUI的 View
完全可以在TableStatusBar.java中搞定的事情。
protected void createAndAddWindows() {
addStatusBarWindow();
addPanelWindows();
hideBar(); //add
}
这样开机就不会显示状态栏,但可以先上拉出来。
如果想永久隐藏可以在frameworks\base\policy\src\com\android\internal\policy\impl\PhoneWindowManager.java中
navVisible |= !mCanHideNavigationBar;
navVisible = false; //add
当然也可以在TableStatusBar.java中去掉showbar的广播接收也可以做到。
终极办法直接干掉导航栏用不现实