Android退出后隐藏状态栏

Posted

技术标签:

【中文标题】Android退出后隐藏状态栏【英文标题】:Android Hiding the status bar after exiting 【发布时间】:2016-10-21 12:54:15 【问题描述】:

所以我有一个隐藏状态栏的代码,但唯一的问题是,如果我转到主页然后重新打开应用程序(仍在运行),状态栏就会出现。此外,当我按下选项按钮(下面的按钮)时,它会显示状态栏。有没有办法在重新打开正在运行的应用程序时禁用选项按钮并隐藏状态栏?

View decorView = getWindow().getDecorView();
    int uiOptions = View.SYSTEM_UI_FLAG_FULLSCREEN;
    decorView.setSystemUiVisibility(uiOptions)

【问题讨论】:

对于选项按钮问题,请尝试我的解决方案。 哦,我的意思是,我只是不希望选项按钮显示任何东西,例如显示“设置”选项卡和状态栏也不显示。我稍后会试试。 :) 很抱歉,它不起作用。当我按下选项按钮时,状态栏出现了,设置选项卡也出现了。 【参考方案1】:

它发生了,因为当您的活动暂停时,Statusbar 变得可见,因此您需要在活动的onResume 中隐藏Statusbar,如下例所示:

@Override
protected void onResume() 
    super.onResume();
    View decorView = getWindow().getDecorView();
    int uiOptions = View.SYSTEM_UI_FLAG_FULLSCREEN;
    decorView.setSystemUiVisibility(uiOptions)

现在,如果您恢复应用,Statusbar 将保持隐藏状态。

【讨论】:

哦,谢谢 :)。我还有一个问题。当我按下手机上的选项按钮时,会显示状态栏。有没有办法禁用位于手机底部的选项按钮? 你说的是靠近主页的选项按钮和底部的返回按钮? 哦,是的。当我尝试重新打开应用程序时,我才意识到这一点。【参考方案2】:

android 清单

选择/设置主题NoActionBar

<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:supportsRtl="true"
    android:theme="@style/Theme.AppCompat.NoActionBar">
    <activity android:name=".MainActivity">
        <intent-filter>
            <action android:name="android.intent.action.MAIN"></action>
            <category android:name="android.intent.category.LAUNCHER"></category>
        </intent-filter>
    </activity>
</application>

注意

如果你只想要single activity那么,

<activity
        android:name=".MainActivity"
        android:label="@string/app_name"
        android:theme="@style/AppTheme.NoActionBar">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
</activity>

现在从您的 MainActivity.java 中删除它,

    @Override
    public boolean onCreateOptionsMenu(Menu menu) 
        MenuInflater menuInflater = getMenuInflater();
        menuInflater.inflate(R.menu.menu_main, menu);
        return super.onCreateOptionsMenu(menu);
    

    @Override
    public boolean onOptionsItemSelected(MenuItem item) 
        return super.onOptionsItemSelected(item);
    

【讨论】:

没有标题栏,这是做什么的?另外,它说没有操作栏? 它的工作原理是选项卡没有显示,但是当我多次按下选项按钮时,状态栏显示了。 你是否从你的活动中删除了onCreateOptionsMenu 是的。如果我在第一次打开时按了两次,它就会显示出来。但后来,它被修复了。唯一的问题是,如果我在打开应用程序后按了两次。 从菜单文件夹中删除 menu.xml【参考方案3】:

onCreateonResume 方法中隐藏通知栏对我有用:

    public override fun onCreate(
        savedInstanceState: Bundle?
    ) 
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        // Hide the status bar
        window.decorView.systemUiVisibility = View.SYSTEM_UI_FLAG_FULLSCREEN
    

    public override fun onResume() 
        super.onResume()

        // Hide the status bar
        window.decorView.systemUiVisibility = View.SYSTEM_UI_FLAG_FULLSCREEN
    

【讨论】:

以上是关于Android退出后隐藏状态栏的主要内容,如果未能解决你的问题,请参考以下文章

Android如何隐藏系统的状态栏

Android 状态栏的设置

android关掉导航栏后怎么

Android 完全隐藏状态栏方法

Android 显示、隐藏状态栏和导航栏

防止屏幕锁定后隐藏的状态栏重新出现