我们在做项目开发的时候,往往自带的标题栏都难以满足我们的要求。这时,我们便希望通过自定义标题栏去实现,但在此之前我们需要做一步重要的准备工作,那便是去除原本自带的标题栏,否则便会出现双标题栏的情况,这对于我们或者用户来说,都是难以接受的。好了,废话不多说,下面我们来看如何实现。
在我看来,去除Android自带标题栏大致可为两种:一种是只去除指定Activity的标题栏,而另一种是去除整个应用程序的标题栏。
第一种:

 ● 去除指定Activity的标题栏,很简单,就如下一句话即可。

requestWindowFeature(Window.FEATURE_NO_TITLE);

但是需要特别注意,一定要在指定Activity的onCreate( )方法中,在setContentView()方法之前。

 ● 去除指定AppCompatActivity的标题栏,需要把上面的代码替换为如下:

supportRequestWindowFeature(Window.FEATURE_NO_TITLE);

    或者,可直接调用下面方法隐藏标题栏

getSupportActionBar().hide();

第二种:去除整个应用程序的标题栏,这也不难,也是一句话就OK了。

        我们知道,在 AndroidManifest.xml 中的 application 标签中,android:theme="@style/AppTheme"语句可以设置当前应用程序的主题样式。因此,我们可以自定义自己的主题样式。可以通过在 styles.xml 文件中,在样式名为 AppTheme 的条目中添加<item name="android:windowNoTitle">true</item>语句即可取消标题栏,也可自定义样式添加。

<style name="AppTheme" parent="AppBaseTheme">
        <item name="android:windowNoTitle">true</item>
    </style>

如果是隐藏整个应用程序中继承AppCompatAvitivoty的标题栏,则需要使用如下方法,同时也会隐藏Acitivity的标题栏。

在 AndroidManifest.xml 中的 application 标签中,将android:theme="@style/AppTheme"替换为如下代码:

android:theme="@style/Theme.AppCompat.Light.NoActionBar"

但直接使用Android现有的样式就无法实现我们其他的自定义样式了,那还有什么更好的方法呢?那就是我们上方所说的自定义样式了,首先我们最好看看Theme.AppCompat.Light.NoActionBar到底是什么东西?

<style name="Theme.AppCompat.Light.NoActionBar">
        <item name="windowActionBar">false</item>
        <item name="windowNoTitle">true</item>
    </style>

原来如此,简单点的实现方法,如下:

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
    </style>

更或者换个姿势,如下:

<style name="AppTheme">
        <item name="android:windowActionBar">false</item>
        <item name="android:windowNoTitle">true</item>
    </style>