防止屏幕锁定后隐藏的状态栏重新出现
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">
【讨论】:
以上是关于防止屏幕锁定后隐藏的状态栏重新出现的主要内容,如果未能解决你的问题,请参考以下文章