38

 在此处输入图像描述

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

  1. 我该如何隐藏它?

  2. 应用退出时是否需要特意显示栏?还是应用退出后会自动恢复?

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

4

2 回答 2

52

我知道为时已晚,但这是正确的答案,因此您尝试做的就是所谓的沉浸式模式。对于 (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);
    }
}
于 2016-05-01T12:50:35.787 回答
29

尝试

getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);

来自官方文档

SYSTEM_UI_FLAG_LOW_PROFILE 标志替换了 STATUS_BAR_HIDDEN 标志。设置后,此标志为系统栏或导航栏启用“低调”模式。导航按钮变暗,系统栏中的其他元素也隐藏。启用此功能对于创建更具沉浸感的游戏很有用,而不会分散系统导航按钮的注意力。

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

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

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

于 2013-04-30T03:30:01.443 回答