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

Posted

技术标签:

【中文标题】防止屏幕锁定后隐藏的状态栏重新出现【英文标题】:Prevent a hidden status bar from reappearing after screen lock 【发布时间】:2012-03-30 21:58:40 【问题描述】:

我想在我的应用程序中隐藏状态栏以使其全屏显示,所以我使用此示例Hide Notification bar - 它工作正常。但是如果我锁屏再解锁,出现状态栏,怎么解决这个问题?

【问题讨论】:

您指的是屏幕顶部的android操作系统状态栏吗?包含电池寿命、时间、Wifi 信号等的那一项? 您是否在活动标签中添加了该主题属性?可能你应该在应用程序标签中尝试,如果你没有那个.. 是的,我试过了,它不起作用 我也有同样的问题。你找到答案了吗? 【参考方案1】:

要隐藏 Android 状态栏和应用程序标题栏,请将以下内容添加到清单文件中:

android:theme="@android:style/Theme.NoTitleBar.Fullscreen"

例子:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="de.vogella.android.temperature"
      android:versionCode="1"
      android:versionName="1.0">
    <application android:icon="@drawable/icon" android:label="@string/app_name">
        <activity android:name=".Convert"
                  android:label="@string/app_name"
                  android:theme="@android:style/Theme.NoTitleBar.Fullscreen" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

    </application>
    <uses-sdk android:minSdkVersion="9" />

</manifest>

更新

从锁屏返回后,还可以尝试将此代码放入您的相关活动中:

public class FullScreen extends Activity 
    @Override
    public void onCreate(Bundle savedInstanceState) 
        super.onCreate(savedInstanceState);

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

        setContentView(R.layout.main);
    

【讨论】:

我已经这样做了——它只在我锁定和解锁屏幕之前有效 更新了我的答案,你可能会更幸运。【参考方案2】:

如果安全不是问题,您可以在应用运行时禁用锁定屏幕。将以下行添加到清单中:

<uses-permission android:name="android.permission.DISABLE_KEYGUARD"/>

在您的活动中,您可以执行以下操作:

public class MyActivity extends Activity 
    private KeyguardLock lock;

    @Override
    public void onCreate(Bundle savedInstanceState) 
        super.onCreate(savedInstanceState);

        // Disable lock screen.
        KeyguardManager keyGuardManager = (KeyguardManager) getSystemService(KEYGUARD_SERVICE);
        lock = keyGuardManager.newKeyguardLock("MyActivity");
        lock.disableKeyguard();
    

    @Override
    protected void onDestroy() 
        super.onDestroy();
        // Reenable the lock screen again.
        lock.reenableKeyguard();
    

【讨论】:

【参考方案3】:

仅将其添加到样式中

 <style name="AppTheme" parent="Theme.Design.Light.NoActionBar">
    <!-- Customize your theme here. -->
    <item name="android:statusBarColor">@android:color/transparent</item>
    <item name="android:windowFullscreen">true</item>
</style>

【讨论】:

【参考方案4】:

onCreate()setContentView()之前使用此代码

this.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);

【讨论】:

【参考方案5】:

将此代码写入应用程序的 mainfest.xml 文件的应用程序标记中,如下所示:

<application  android:name="application package"
            android:label="application name" android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen"> 

【讨论】:

以上是关于防止屏幕锁定后隐藏的状态栏重新出现的主要内容,如果未能解决你的问题,请参考以下文章

在滚动视图中动态隐藏状态栏时滞后/屏幕冻结(Swift 3)

使用前端路由防止 iOS chrome 状态栏重新出现

android关掉导航栏后怎么

当隐藏状态栏时,有没有办法防止布局“跳跃”?

Android退出后隐藏状态栏

如何在 iOS 7 和 iOS 6 中出现动画启动画面期间隐藏状态栏?