隐藏状态栏,布局稳定并保持操作栏的位置

时间:2017-08-21 20:02:10

标签: android android-actionbar android-statusbar

是否可以以编程方式隐藏状态栏而不隐藏操作栏?

最终目标是隐藏状态栏及其内容,同时将屏幕上的其他内容保留在其位置,不用隐藏操作栏,然后在5秒后显示状态再次禁止同时保留所有其他内容。基本上,在屏幕顶部留下与状态栏大小相同的空白视图/空间。

我尝试过以下视图标记的各种组合:

private void maybeHideStatusBar() {
    int flags = View.SYSTEM_UI_FLAG_FULLSCREEN
        | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
        | View.SYSTEM_UI_FLAG_LAYOUT_STABLE;
    persistSystemUiVisibility(mActivityWindow, flags);
}

persistSystemUiVisibility(...)如下:

private static void persistSystemUiVisibility(final Window window, final int visibility) {
    final View decorView = window.getDecorView();
    decorView.setOnSystemUiVisibilityChangeListener(null);
    decorView.setSystemUiVisibility(visibility);
    decorView.setOnSystemUiVisibilityChangeListener(
    new View.OnSystemUiVisibilityChangeListener() {
      @Override
      public void onSystemUiVisibilityChange(int newVisibility) {
        if (newVisibility != visibility) {
          persistSystemUiVisibility(window, visibility);
        }
      }
    });
}

但是,实际隐藏状态栏及其内容的最重要的窗口标志View.SYSTEM_UI_FLAG_FULLSCREEN也会强制隐藏操作栏。有没有办法覆盖这个默认的操作栏行为?

所有这些都需要在活动创建后setContentView发生,因此requestWindowFeature(Window.FEATURE_ACTION_BAR)无法正常工作。

任何帮助都会非常赞赏,谢谢! :)

0 个答案:

没有答案