Android Studio在创建的默认空Activity自带有一个主题和ActionBar,这个ActionBar是有别于标题栏的。Android开发新手对于这个ActionBar可能会存在一些疑惑,本文就此交流一下个人学习总结。
我们在开发Android应用的时候,经常需要有一个Splash,也就是所谓的启动页面,这个启动页面一般是占据整个页面的,不存在标题栏。有时候,我们也可以设置为全屏, 这样就连系统的状态栏都会没有了。对于让如何让页面全屏显示,可能比较容易从网上找到答案,但是去掉ActionBar以及对ActionBar的设置,新手可能会存在一些疑惑。
环境:
Android Studio:2.3.1
Gradle:2.3.1
compileSdkVersion 25
buildToolsVersion “25.0.2”
何为ActionBar?
底下的图片显示的,就是ActionBar了。
去掉ActionBar的方法
如果我们使用系统自带的新建Activity的方法创建了一个Activity,会发现自带了ActionBar,也就是下图显示的新建方法:
此时,如果想要去掉ActionBar,可以在AndroidManifest.xml文件对应的Activity当中,增加以下语句:
android:theme="@style/Theme.AppCompat.NoActionBar"
如下图:
这样,Activity带上的ActionBar就会不显示了。
当然,如果你想在Activity类的onCreate()方法中通过如下代码实现,会发现没有效果,具体原因继续往下看
//取消标题栏
requestWindowFeature(Window.FEATURE_NO_TITLE);
主题应用了还是没有ActionBar?
对于Android开发新手,往往我们按照一些教程,都是教我们手动创建一个Activity的类文件继承自Activity,然后再创建一个布局文件,手动将他们关联起来,并在AndroidManifest文件当中加入声明,这样一个Activity就手动创建好了。但是这样创建的Activity存在一个问题,就是没有ActionBar,没有标题栏,很不美观啊。
一开始,我们可能会认为是没有应用主题,但是如果我们手动在AndroidManifest文件当中加上
android:theme="@style/AppTheme"
然而,仍旧不会奏效,这可难倒新手了。那怎样才能加上一个跟系统方式创建的Activity一样的ActionBar呢?
其实,如果细心观察,会发现,其实是因为我们继承的类不对,我们自己创建的类继承自Activity,但是系统创建的Activity继承自AppCompatActivity,这两者是有所区别的。AppCompatActivity是谷歌官方为了向后兼容而设计的一个Activity类并且能够让旧版本系统能够显示新版的主题。因此,如果想要实现带有ActionBar的Activity,可以更改自己创建的类继承自AppCompatActivity,其他的不用变。
到此,你应该明白上面说的,通过那一行代码去掉ActionBar不可行的原因了吧。
想要全屏显示,去掉状态栏?
这个很好办,只需要在Activity类的onCreate()方法中,加上这样一个语句:
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);