如何在 Android 4 中隐藏状态栏
Posted
技术标签:
【中文标题】如何在 Android 4 中隐藏状态栏【英文标题】:How to hide StatusBar in Android 4 【发布时间】:2012-02-28 15:23:58 【问题描述】::
请帮帮我。
【问题讨论】:
How to toggle the Statusbar?的可能重复 【参考方案1】:您问题中图像中显示的栏称为系统栏。
在没有硬件按钮的设备上,如果发生用户输入,系统栏将始终显示。您可以使用标志SYSTEM_UI_FLAG_HIDE_NAVIGATION 调用setSystemUiVisibility,并通过Window 请求以下窗口功能FLAG_FULLSCREEN。只要用户不与屏幕交互,这应该隐藏系统栏并使您的视图全屏显示。如果用户触摸屏幕,系统栏将重新出现以允许用户使用主软件键和后退软件键。
如果您有一个用户将与之交互的视图,但您不希望他被系统栏分心,您可以设置SYSTEM_UI_FLAG_LOW_PROFILE 标志。这应该会使系统栏变暗并减少分心。
【讨论】:
我试过了,但在我的摩托罗拉 xoom 2 android 4.0.1 上不起作用。你确定这行得通吗?我在 onCreate 方法上调用 setSystemUiVisibility。【参考方案2】:我同意 Janusz 的观点。 Android 4.0 无法实现 100% 真全屏。
使用以下方法使通知栏(又名状态栏、系统栏)变暗
getWindow().getDecorView().setSystemUiVisibility
(View.SYSTEM_UI_FLAG_LOW_PROFILE);
并用它来隐藏它
getWindow().getDecorView().setSystemUiVisibility
(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);
而且,如果我猜对了,您正在尝试实现“信息亭模式”。您可以使用名为“surelock”的应用程序获得一些帮助。这会阻止所有“home”和“back”操作。
【讨论】:
Surelock 不仅仅是添加这两个标志。它完全隐藏了主页、最近的应用程序和屏幕截图按钮。只有主页按钮可见。在 root 设备上,它实际上可以隐藏完整的状态栏并以全屏模式运行所有应用程序。【参考方案3】:如果您希望获得流畅的体验,而没有中间的“急速”布局,这里是 API 级别 14 的解决方案。
final Window window = getWindow();
if (isFullScreen == true)
window.addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
// This flag will prevent the status bar disappearing animation from jerking the content view
window.addFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);
window.clearFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);
else
window.addFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);
window.clearFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);
window.clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
【讨论】:
【参考方案4】:你可以隐藏它。只需在 OnCreate() 方法中使用以下 api
requestWindowFeature(Window.FEATURE_NO_TITLE);
【讨论】:
这只会隐藏操作栏。以上是关于如何在 Android 4 中隐藏状态栏的主要内容,如果未能解决你的问题,请参考以下文章
在 android 4.4+ 或 kitkat 中隐藏状态栏
Android全屏(包含3种隐藏顶部状态栏及标题栏和一种隐藏Android 4.0平板底部状态栏的方法)