在平时的Android开发中,通常新建项目后系统会默认带了一个标题栏,而在项目中我们通常也是不需要这个标题栏的(大多都是自定义),所以基本上都会去除系统的标题栏,这篇博文就是介绍三种去除标题栏的方法,并在最后罗列一下三种模式的优缺点.如果不想看啰嗦,直接拉到最底下看结论也行.

首先看一下默认显示效果,顶部可以看到硕大的标题栏:

1 三种方式介绍

1. 修改AndroidManifest.xml文件中的系统主题

当我们新创建一个Android项目的时候(我这里使用Android Studio 3.2.1),通常项目结构如下:

我们点击AndroidManifest.xml文件

看到里面的代码如下:

<application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

android:theme="@style/AppTheme"

这一行代码的意思就是项目使用的主题为项目目录 res->values下的styles.xml文件中的AppTheme主题,如图:

那么我们直接修改这里,把主题修改为Android自带的不带标题栏的方法即可,代码如下:

<application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@android:style/Theme.Black.NoTitleBar"> <!--修改这行代码即可-->
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

修改后看下效果:

可以看出已经消除了.

2. 修改styles.xml文件中的主题

<resources>

    <!-- Base application theme. -->
    <style name="AppTheme" parent="android:Theme.Holo.NoActionBar">
        <!-- Customize your theme here. -->
    </style>

</resources>

修改父主题,父主题内的代码为:

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

可以看出不显示ActionBar及隐藏标题栏.

3. Activity中修改

对每个activity中设置不显示标题栏,代码如下:

import android.app.Activity;
import android.os.Bundle;
import android.view.Window;

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE); // 代码必须填写在setContentView()方法之前,否则闪退
        setContentView(R.layout.activity_main);
    }
}

2 优缺点总结:

方式Manifest.xmlstyles.xmlActivity
优点修改后全局可用修改后全局可用并且定制化程度高作用域独立
缺点无法自定义标题栏 每个activity都需要设置
注意点代码书写顺序有要求

3 如何选择:

建议选用第二种方式.