有没有办法隐藏Android ICS中的系统/导航栏

Rob*_*ski 20 android tablet android-4.0-ice-cream-sandwich

我想扩展有关在Android Ice Cream Sandwich(4.0及更高版本)平板电脑设备上屏幕底部隐藏系统/导航栏的讨论.

已经有一个线程(有没有办法隐藏Android 3.0中的系统栏?这是一个内部设备,我正在管理导航)关于隐藏Honeycomb设备上的栏.然而,我的客户将使用最新的冰淇淋三明治设备,并且非常热衷于隐藏屏幕底部的条形图.他们的应用程序不适合普通消费者使用,他们接管整个屏幕以提供他们的体验非常重要.如何在没有设备生根或重写固件的情况下隐藏此栏 - 或者至少覆盖所有按钮的行为?

小智 24

签出后SYSTEM_UI_FLAG_HIDE_NAVIGATION,此标志会隐藏导航栏,直到用户与设备进行交互.它是在Android 4.0中引入的.您可以启用此标志,例如:

getWindow().getDecorView()
           .setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);
Run Code Online (Sandbox Code Playgroud)

请注意,导航不会自动再次消失,您必须在用户与设备交互后每次设置.

或者,您可以通过使用使导航不那么突兀SYSTEM_UI_FLAG_LOW_PROFILE,这会将按钮更改为小点(例如,像相机应用程序).


小智 12

在root设备上,我使用以下adb命令

adb shell pm disable com.android.systemui
Run Code Online (Sandbox Code Playgroud)

永久隐藏导航栏.要再次显示,请运行

adb shell pm enable com.android.systemui
Run Code Online (Sandbox Code Playgroud)

到目前为止它对我来说很好

  • 感谢您的反馈.重新启动真的困扰我,所以我使用以下命令来隐藏吧`adb shell服务调用活动42 s16 com.android.systemui`然后再次显示栏我执行此命令:`adb shell am startservice -n com.android.systemui/.SystemUIService`这种方法不需要重启,我想如果你喜欢的话我会和你分享. (7认同)

ik0*_*024 5

使用下面的代码是一种隐藏导航的方法

getWindow().getDecorView()
           .setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);
Run Code Online (Sandbox Code Playgroud)

但是上面的问题是,一旦用户触摸屏幕,它就会变得可见。

在 Android Kitkat 中有一个称为 as 的功能,IMMERSIVE它隐藏了通知栏和导航。即使用户与屏幕交互,它也不会显示。但是,用户可以通过从屏幕顶部向底部滑动来使其可见。下面是实现它的代码

//Initializew this in onCreate()
View mDecorView = getWindow().getDecorView();

//Then call this function
private void hideSystemUI() {
     mDecorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_STABLE
            | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
            | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
            | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
            | View.SYSTEM_UI_FLAG_FULLSCREEN
            | View.SYSTEM_UI_FLAG_LOW_PROFILE
            | View.SYSTEM_UI_FLAG_IMMERSIVE);
}
Run Code Online (Sandbox Code Playgroud)

但是,就我而言,即使用户从屏幕顶部滑动到底部,我也不希望导航和通知栏可见。我试了一下,我能够部分实现它。我所做的是实现了一个每隔一秒左右CountDownTimer就会调用hideSystemUI()一次的方法。我知道这不是最好的方法。但我没有得到任何其他解决方案来做到这一点。

如果有人收到任何信息,请告诉我如何永久隐藏导航和通知栏 :) 希望这个答案对未来有所帮助 :)

观看视频以更好地了解此功能。