Activity的全屏设置

设置启动页的时候,大家应该都会有需要启动页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);
}

 

Supongo que te gusta

Origin blog.csdn.net/sdsh1880gm/article/details/83279089
Recomendado
Clasificación