完全隐藏stausBar

时间:2016-05-21 05:39:05

标签: android android-statusbar

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

我正在关注Android开发人员的Hide the Status Bar on Android 4.1 and Higher

代码是:

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

所以即使从屏幕顶部滑动,我怎么也不允许显示状态栏。

1 个答案:

答案 0 :(得分: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" />

取自Disable the notification panel from being pulled down

对于KITKAT

我们无法阻止在kitkat设备中以全屏模式显示状态,因此制作了一个仍然符合要求的黑客攻击,即阻止状态栏扩展。

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

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

对于kitkat及以上,see this answer