1

我正在创建一个屏幕锁定应用程序。我想隐藏状态栏,以便用户看不到状态栏并通过它打开其他应用程序。我已成功隐藏状态栏,但随着您从屏幕顶部拖动它再次出现。

我正在关注 android developer 的Hide the Status Bar on Android 4.1 及更高版本

代码是:

View decorView = getWindow().getDecorView();
// Hide the status bar.
int uiOptions = View.SYSTEM_UI_FLAG_FULLSCREEN;
decorView.setSystemUiVisibility(uiOptions);

那么即使您从屏幕顶部滑动,我如何也不允许出现状态栏。

4

1 回答 1

0

这可以使用反射来实现。不过也有很多问题。

无法检查通知面板是否打开或打开。因此,我们将不得不依赖 Activity#onWindowFocusChanged(boolean)。这就是问题开始的地方。

public void onWindowFocusChanged (boolean hasFocus)

Called when the current Window of the activity gains or loses focus. This is the best indicator of whether this activity is visible

给用户。

首先,您需要 EXPAND_STATUS_BAR 权限:

<uses-permission android:name="android.permission.EXPAND_STATUS_BAR" />

取自禁用通知面板被下拉

对于奇巧

我们无法阻止在 kitkat 设备中以全屏模式显示状态,所以做了一个仍然符合要求的 hack,即阻止状态栏扩展。

为此,该应用程序没有全屏显示。我们在状态栏上放置了一个覆盖层并消耗了所有输入事件。它阻止了地位的扩大。

  • customViewGroup 是自定义类,它扩展了任何布局(框架、相对布局等)并使用触摸事件。
  • 消费触摸事件覆盖视图组的onInterceptTouchEvent方法并返回true

对于 kitkat 及以上版本,请参阅此答案

于 2016-05-21T06:03:07.923 回答