如何隐藏Android手机上的软键栏?

ohh*_*hho 34 android android-4.2-jelly-bean

在此输入图像描述

当我的应用程序启动时,我想隐藏软键栏(红色矩形)以拥有更大的屏幕.

  1. 我怎么能隐藏它?

  2. 当应用程序退出时,我是否需要故意显示该栏?或者它会在应用程序退出后自动恢复?

Android 4.1,手机正面没有硬件按键.

mhd*_*ati 46

我知道它已经很晚了,但这是正确的答案所以你要做的就是所谓的沉浸式模式.for(API 19)

退房:https://developer.android.com/training/system-ui/immersive.html

您要求的代码是:

@Override
public void onWindowFocusChanged(boolean hasFocus) {
    super.onWindowFocusChanged(hasFocus);
    if (hasFocus) {
        getWindow().getDecorView().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_IMMERSIVE_STICKY);
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 最后它的工作.代码是每一个,但重点在于它在WindowsFocusChanged上.谢谢! (4认同)

Mar*_*mic 26

尝试

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

来自官方文件

SYSTEM_UI_FLAG_LOW_PROFILE标志替换STATUS_BAR_HIDDEN标志.设置时,此标志为系统栏或导航栏启用"低调"模式.导航按钮暗淡,系统栏中的其他元素也隐藏.启用此功能对于创建更加身临其境的游戏而不会分散系统导航按钮非常有用.

SYSTEM_UI_FLAG_VISIBLE标志替换STATUS_BAR_VISIBLE标志以请求系统栏或导航栏可见.

SYSTEM_UI_FLAG_HIDE_NAVIGATION是一个新标志,要求导航栏完全隐藏.请注意,这仅适用于某些手机使用的导航栏(它不会隐藏平板电脑上的系统栏).一旦系统收到用户输入,导航栏就会返回查看状态.因此,该模式主要用于视频回放或需要整个屏幕但不需要用户输入的其他情况.

导航栏的行为取决于应用程序IIRC,因此应在用户离开您的应用程序后再次显示.

  • 谢谢!上面的代码按预期隐藏了栏.但是,当我触摸活动应用程序的屏幕时,该栏将重新出现.如何在应用程序生命周期的剩余时间内隐藏栏? (2认同)
  • @MarsAtomic从API级别19开始,有SYSTEM_UI_FLAG_IMMERSIVE和SYSTEM_UI_FLAG_IMMERSIVE_STICKY (2认同)