如何在安卓手机上隐藏虚拟按键栏?

38

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

  1. 我该如何隐藏它?

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

使用Android 4.1,在手机前面没有硬件按键。


可能是在平板电脑中隐藏系统栏的重复问题。 - jprofitt
也可能会有所帮助:简单的方法隐藏Android ICS上的系统栏 - jprofitt
2个回答

53

我知道已经很晚了,但这是正确的答案,你想做的是所谓的沉浸式模式。适用于(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);
    }
}

谢谢,但是当我打开键盘时,底部布局被裁剪了。 - Praveen Pandey
@PraveenPandey,你应该添加clippadding false标签。 - mhdjazmati
4
终于成功了。代码无处不在,但关键是要在 onWindowFocusChanged 中实现它。谢谢! - Mete
谢谢。无论用户交互如何,都能正常工作。 - CrazedCoder
1
@AbdulmalekDery,你好啊,我的大学朋友 :) - mhdjazmati
显示剩余3条评论

29

尝试

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

来自官方文档

SYSYEM_UI_FLAG_LOW_PROFILE标志替代了STATUS_BAR_HIDDEN标志。当设置此标志时,系统栏或导航栏将启用“低调模式”。导航按钮会变暗,系统栏中的其他元素也会隐藏。启用此功能可创建更具沉浸感的游戏,无需分散注意力到系统导航按钮。

SYSYEM_UI_FLAG_VISIBLE标志替代了STATUS_BAR_VISIBLE标志,以请求显示系统栏或导航栏。

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

导航栏的行为取决于应用程序,如果我没记错的话,所以在用户离开您的应用程序后,它应该再次显示。


2
谢谢!上述代码按预期隐藏了状态栏。然而,当我触摸活动应用程序的屏幕时,状态栏会重新出现。如何让状态栏在其余应用程序生命周期内保持隐藏? - ohho
1
每当用户与应用程序进行交互时,导航栏都会重新出现,正如您所见。这是根据官方文档的意图行为。不幸的是,我认为您将不得不在每次期望交互时隐藏该栏。https://developer.android.com/reference/android/view/View.html#SYSTEM_UI_FLAG_HIDE_NAVIGATION - MarsAtomic
2
@MarsAtomic 自 API 级别 19 开始,有 SYSTEM_UI_FLAG_IMMERSIVE 和 SYSTEM_UI_FLAG_IMMERSIVE_STICKY。 - user457015

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接