设置启动页的时候,大家应该都会有需要启动页Activity设置为全屏(FullScreen)的需求吧,但是这里一开始我遇到一点小问题:
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.joern.happynumber/com.example.joern.happynumber.MainActivity}:
java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity.
报了这样一个错误,后面经过错误提示和分析,原因是因为我的Activity是继承自AppCompatActivity,而且在AndroidManifest.xml里面是通过如下方式进行全屏设置:
<activity
android:name=".MainActivity"
android:theme="@android:style/Theme.NoTitleBar.Fullscreen">
上述方案只会继承Activity的界面有效。
综上解决方案有如下几种
方案1:继承Activity
若非特别必要的情况下,我们可以继承Activity而非AppCompatActivity,然后全屏设置和上面一样,这种情况下是可以达到全屏的要求的,也不会报错。
当然也可以通过代码实现而非AndroidManifest
this.requestWindowFeature(Window.FEATURE_NO_TITLE);//去掉标题栏
this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);//去掉信息栏
方案2:代码方式隐藏ActionBar + FullScreen
如果确实有其他需求,不想改成Activity的话,可以在onCreate代码中用如下方式进行操作(在setContentView之前)
/**
* hide action bar
*/
private void hideActionBar() {
// Hide UI
ActionBar actionBar = getSupportActionBar();
if (actionBar != null) {
actionBar.hide();
}
}
/**
* set the activity display in full screen
*/
private void setFullScreen() {
this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
}