Android:显示/隐藏状态栏/电源栏

B77*_*770 39 android statusbar show-hide

我正在尝试创建一个按钮,我可以隐藏或显示平板电脑上的状态栏.

我已经加入了onCreate

getWindow().addFlags(WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);
Run Code Online (Sandbox Code Playgroud)

并在按钮显示:

WindowManager.LayoutParams attrs = getWindow().getAttributes();
attrs.flags &= ~WindowManager.LayoutParams.FLAG_FULLSCREEN;
getWindow().setAttributes(attrs);
Run Code Online (Sandbox Code Playgroud)

隐藏:

WindowManager.LayoutParams attrs = getWindow().getAttributes();
attrs.flags |= WindowManager.LayoutParams.FLAG_FULLSCREEN;
getWindow().setAttributes(attrs);
Run Code Online (Sandbox Code Playgroud)

任何提示/ tipps?

//编辑

我在这里查看了这个提示:http://android.serverbox.ch/? p = 306 并改变了我的代码:

private void hideStatusBar() throws IOException, InterruptedException {
    Process proc = Runtime.getRuntime().exec(new String[]{"su","-c","service call activity 79 s16 com.android.systemui"});
    proc.waitFor();
}

private void showStatusBar() throws IOException, InterruptedException {
    Process proc = Runtime.getRuntime().exec(new String[]{"am","startservice","-n","com.android.systemui/.SystemUIService"});
    proc.waitFor();
}
Run Code Online (Sandbox Code Playgroud)

因此,如果我点击我的按钮,方法被调用我可以看到发生了什么,因为应用程序正在等待几秒钟.我也调查了LockCat,发现事情正在发生.

显示:http://pastebin.com/CidTRSTi 隐藏:http://pastebin.com/iPS6Kgbp

Rob*_*Rob 123

您是否在清单中设置了全屏主题?

android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
Run Code Online (Sandbox Code Playgroud)

如果没有这个,我认为你不能全屏.

我将使用以下内容添加和删除全屏标志:

// Hide status bar
getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
// Show status bar
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
Run Code Online (Sandbox Code Playgroud)


Pra*_*eep 34

对于某些人,通过清除FLAG_FULLSCREEN显示状态栏可能不起作用,

这是适用于我的解决方案,(文档)(标记参考)

隐藏状态栏

// Hide Status Bar
if (Build.VERSION.SDK_INT < 16) {
            getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
                    WindowManager.LayoutParams.FLAG_FULLSCREEN);
}
else {
   View decorView = getWindow().getDecorView();
  // Hide Status Bar.
   int uiOptions = View.SYSTEM_UI_FLAG_FULLSCREEN;
   decorView.setSystemUiVisibility(uiOptions);
}
Run Code Online (Sandbox Code Playgroud)

显示状态栏

   if (Build.VERSION.SDK_INT < 16) {
              getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
    }
    else {
       View decorView = getWindow().getDecorView();
      // Show Status Bar.
       int uiOptions = View.SYSTEM_UI_FLAG_VISIBLE;
       decorView.setSystemUiVisibility(uiOptions);
    }
Run Code Online (Sandbox Code Playgroud)

  • 我有相同的确切代码,但状态栏仍在显示 (3认同)

Pra*_*eep 5

用于 android 中的 kolin 用于隐藏 kolin 中的状态栏,无需在行尾使用分号(;)

window.addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN)
Run Code Online (Sandbox Code Playgroud)

在android中使用java语言隐藏状态栏

getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
Run Code Online (Sandbox Code Playgroud)