Android开发新手之ActionBar那些事

来源:互联网 发布:纱布收腹带淘宝网 编辑:程序博客网 时间:2024/05/16 12:51

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);
0 0