如何在所有布局中隐藏状态栏?

时间:2019-07-26 07:03:56

标签: android

我想在单击按钮时隐藏所有布局的状态栏。我在设置布局中定义了该按钮。但是单击“隐藏”按钮后,当前布局的状态栏将被隐藏,而其他布局则不受影响。因此,让我知道如何在mu app的所有布局上实现它。

3 个答案:

答案 0 :(得分:1)

  1. 为所有Activity创建一个超类,将其命名为BaseActivity或AbstractActivity,并使每个Activity扩展该类。
  2. setContentView之前的onCreate中,从诸如SharedPreferences之类的数据库中读取是否应隐藏状态栏。如果是这样,则将其隐藏。
  3. 在“设置”活动中,调用recreate(),以便再次调用先前活动中的每个onCreate。

答案 1 :(得分:1)

这实际上取决于您使用的android版本。例如,在Android 4.0及更低版本中,您可以通过执行以下操作来实现它:

<application
...
android:theme="@android:style/Theme.Holo.NoActionBar.Fullscreen" >
...
</application>

有关完整文档,请访问:https://developer.android.com/training/system-ui/status

编辑:以下代码对您的按钮更有利:

void HideStatusBar() {
     View decorView = getWindow().getDecorView();
     // Hide the status bar.
     int uiOptions = View.SYSTEM_UI_FLAG_FULLSCREEN;
     decorView.setSystemUiVisibility(uiOptions);
     // Remember that you should never show the action bar if the
     // status bar is hidden, so hide that too if necessary.
     ActionBar actionBar = getActionBar();
     actionBar.hide();
}

因此,当用户单击按钮时,调用此功能。请记住,这也会隐藏操作栏或工具栏,因此,如果您不想删除actionbar.hide()部分。很好,但不幸的是,它仅适用于Android 4.1及更高版本,因此,如果您支持较低版本,则最好查看文档以获取线索。希望对您有帮助!

答案 2 :(得分:-1)

创建全屏主题并将其用于您的所有活动,或者创建Base类并使用下面的代码来实现它。

requestWindowFeature(Window.FEATURE_NO_TITLE);
this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);

注意:在调用setContentView()之前,请使用上面的代码;

或尝试使用此样式:

<style name="Theme.AppCompat.Light.NoActionBar.FullScreen" parent="Theme.AppCompat.Light.DarkActionBar">
    <item name="android:windowNoTitle">true</item>
    <item name="android:windowActionBar">false</item>
    <item name="android:windowFullscreen">true</item>
    <item name="android:windowContentOverlay">@null</item>
</style>

希望有帮助! <3