Android隐藏顶部标题栏

本文会会用六种方法来实现顶部标题栏的隐藏,这六种主要分为三大类。

  • 第一类 使用styles.xml文件。
  • 第二类 修改清单文件AndroidManifest.xml中的theme
  • 第三类 使用代码。
效果图

第一类 使用styles.xml文件

方法一 修改style标签的parent值

找到style标签然后把parent的值改成Theme.AppCompat.Light.NoActionBar

<resources>
    <!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
        <!-- Customize your theme here. -->
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
    </style>
</resources>

方法二 在style标签添加一个item标签

也可以不用修改parent的值,在style标签里面添加一个item标签。

<resources>
    <!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <!-- Customize your theme here. -->
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
        <!-- 隐藏顶部标题栏 -->
        <item name="android:windowNoTitle">true</item> 
    </style>
</resources>

方法三 自定义style

styles.xml文件创建style标签然后添加一个item标签。

<resources>
    <!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <!-- Customize your theme here. -->
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
    </style>

    <!-- 自定义style标签用于隐藏顶部标题栏 -->
    <style name="noTitle" parent="Theme.AppCompat.Light">
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
        <!-- 隐藏顶部标题栏 -->
        <item name="android:windowNoTitle">true</item>
    </style>
</resources>

然后在AndroidManifest.xml中把android:theme的值改为noTitle

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.myapplication">

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        <!-- 设置为自定义style -->
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

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

</manifest>

第二类 修改清单文件AndroidManifest.xml中的theme

如果MainActivity.java不是继承Activity就会出现报错,软件也会停止运行,出现错误可以根据以下方法来解决。

  • 如果不是强烈要求我们的Activity必须继承自AppCompatActivity,就直接让它继承Activity
  • 如果还是想继承自AppCompatActivity,那么根据提示来使用AppCompattheme,即将AndroidManifest.xml文件中关于Activitytheme配置改为:android:theme=”@style/Theme.AppCompat.Light.NoActionBar”
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.myapplication">

    <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.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>

</manifest>
Android系统自带样式
android:theme=”@android:style/Theme.Dialog将一个Activity显示为对话框模式。
android:theme=”@android:style/Theme.NoTitleBar不显示应用程序标题栏。
android:theme=”@android:style/Theme.NoTitleBar.Fullscreen不显示应用程序标题栏,并全屏。
android:theme=”Theme.Light背景为白色。
andorid:theme=”Theme.Light.NoTitleBar白色背景并无标题栏。
android:theme=”Theme.Black背景为黑色。
android:theme=”Theme.Black.NoTitleBar黑色背景并无标题栏。
android:theme=”Theme.Black.NoTitleBar.Fullscreen黑色背景,无标题栏,全屏。
android:theme=”Theme.Wallpaper用系统桌面为应用程序背景。
android:theme=”Theme.Wallpaper.NoTitleBar用系统桌面为应用程序背景,且无标题栏。
android:theme=”Theme.Wallpaper.NoTitleBar.Fullscreen用系统桌面为应用程序背景,无标题栏,全屏。
android:theme=”Translucent透明背景。
android:theme=”Theme.Translucent.NoTitleBar透明背景并无标题。
android:theme=”Theme.Translucent.NoTitleBar.Fullscreen透明背景并无标题,全屏。
android:theme=”Theme.Panel面板风格显示。
android:theme=”Theme.Light.Panel平板风格显示。

第三类 使用代码 推荐使用这些方法

方法一 继承Acticity

public class MainActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // 隐藏标题栏并保存状态栏
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.activity_main);
    }
}

注意:该方法一定要加在setContentView()方法前面。

方法二 继承AppCompatActivity

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        if (getSupportActionBar() != null) {
            // 隐藏标题栏并保存状态栏
            getSupportActionBar().hide();
        }
        setContentView(R.layout.activity_main);
    }
}

ins: rinomaru