924

我想隐藏我的一些活动的标题栏。问题是我对所有活动都应用了一种样式,因此我不能简单地将主题设置为@android:style/Theme.NoTitleBar.

使用NoTitleBar主题作为我的样式的父主题会从我的所有活动中删除标题栏。

我可以在某处设置无标题样式的项目吗?

4

38 回答 38

1091

在您的onCreate()方法中执行此操作。

//Remove title bar
this.requestWindowFeature(Window.FEATURE_NO_TITLE);

//Remove notification bar
this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);

//set content view AFTER ABOVE sequence (to avoid crash)
this.setContentView(R.layout.your_layout_name_here); 

this指的是Activity

于 2010-04-07T09:35:12.260 回答
541

您可以修改您的AndroidManifest.xml

<activity android:name=".MainActivity"
          android:label="@string/app_name"
          android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen">

或者android:theme="@android:style/Theme.Black.NoTitleBar"如果您不需要全屏活动,请使用。

注意:如果您之前使用过“默认”视图,您可能还应该将父类从 更改AppCompatActivityActivity

于 2010-09-20T14:56:40.063 回答
403

我现在做了以下事情。

我声明了一个样式继承了我的一般样式的所有内容,然后禁用了 titleBar。

<style name="generalnotitle" parent="general">
    <item name="android:windowNoTitle">true</item>
</style>

现在我可以为每个要隐藏标题栏的 Activity 设置此样式,覆盖应用程序范围的样式并继承所有其他样式信息,因此样式代码中没有重复。

要将样式应用于特定的活动,请打开AndroidManifest.xml并将以下属性添加到activity标签;

<activity
    android:theme="@style/generalnotitle">
于 2010-04-13T08:15:29.667 回答
168

我不喜欢,this.requestWindowFeature(Window.FEATURE_NO_TITLE);因为标题栏短暂出现,然后消失。

我也不喜欢,android:theme="@android:style/Theme.NoTitleBar"因为我失去了新设备用户已经习惯的所有 3.0+ Holo 更改。所以我遇到了这个解决方案。

在您的res/values文件夹中创建一个名为styles.xml的文件(如果它尚不存在)。在该文件中放置以下代码:

<resources xmlns:android="http://schemas.android.com/apk/res/android">
    <style name="Theme.Default" parent="@android:style/Theme"></style>
    <style name="Theme.NoTitle" parent="@android:style/Theme.NoTitleBar"></style>
    <style name="Theme.FullScreen" parent="@android:style/Theme.NoTitleBar.Fullscreen"></style>
</resources>

接下来使用另一个styles.xml文件创建一个res/values-v11(这可能已经存在)。在该文件中放置以下代码:

<resources xmlns:android="http://schemas.android.com/apk/res/android">
    <style name="Theme.Default" parent="@android:style/Theme.Holo"></style>
    <style name="Theme.NoTitle" parent="@android:style/Theme.Holo.NoActionBar"></style>
    <style name="Theme.FullScreen" parent="@android:style/Theme.Holo.NoActionBar.Fullscreen"></style>
</resources>

如果您的目标是 4.0+,请使用另一个styles.xml文件创建一个res/values-v14文件夹(是的,它可能已经存在)。在该文件中放置以下代码:

<resources xmlns:android="http://schemas.android.com/apk/res/android">
    <style name="Theme.Default" parent="@android:style/Theme.Holo.Light"></style>
    <style name="Theme.NoTitle" parent="@android:style/Theme.Holo.Light.NoActionBar"></style>
    <style name="Theme.FullScreen" parent="@android:style/Theme.Holo.Light.NoActionBar.Fullscreen"></style>
</resources>

最后,创建所有这些文件后,打开您的AndroidManifiest.xml文件,您可以添加代码:

android:theme="@style/Theme.NoTitle"

如果您希望将其应用于整个应用程序,则添加到您不想要标题的活动的活动标签或应用程序标签。

现在,您的用户将获得与他们的设备版本相关联的主题以及您想要的屏幕布局。

PS 将值更改为android:theme="@style/Theme.FullScreen"将具有相同的效果,但也会删除通知栏。

于 2013-01-02T01:06:23.987 回答
108

如开发者 Android 页面所述,可以通过两种方式删除标题栏:

manifest.xml文件中:

  1. application如果要为应用程序中的所有活动删除它,请添加以下内容:

    <application android:theme="@android:style/Theme.Black.NoTitleBar">
    
  2. 或针对特定活动:

    <activity android:theme="@android:style/Theme.Black.NoTitleBar">
    
于 2012-03-20T11:48:25.557 回答
67

正确的答案可能是不扩展 ActionbarActivity 而只是扩展 Activity


如果您仍然使用操作栏活动,这似乎是有效的:

@Override
protected void onCreate(Bundle savedInstanceState) {          
    super.onCreate(savedInstanceState);
    getSupportActionBar().hide(); //<< this
    setContentView(R.layout.activity_main);
}

似乎这也有效:

styles.xml:

   <style name="AppBaseTheme" parent="Theme.AppCompat.Light" >
          <item name="android:windowNoTitle">true</item>   <!-- //this -->     
   </style>

我可以像 Scott Biggs 写的那样做。这种作品。除非那时没有主题。我的意思是设置菜单的背景是透明的:

只是改变

public class MainActivity extends ActionBarActivity {

到 Activity 或 FragmentActivity

public class MainActivity extends Activity  {

但是我可以使用材料设计使其看起来足够好,而不是删除操作栏: https ://gist.github.com/shimondoodkin/86e56b3351b704a05e53

  1. 设置应用程序图标
  2. 设置动作栏的颜色以匹配设计。
  3. 将图标设置为设置菜单
  4. 添加更多图标(顶部的按钮)

它是材料设计兼容性动作栏样式的示例。

于 2015-01-16T02:49:53.083 回答
55

什么对我有用:

1-在styles.xml中:

 <style name="generalnotitle" parent="Theme.AppCompat.Light" >
          <item name="android:windowNoTitle">true</item>   <!-- //this -->     
   </style>

2- 在 MainActivity

@Override
protected void onCreate(Bundle savedInstanceState) {          
    super.onCreate(savedInstanceState);
    getSupportActionBar().hide(); //<< this
    setContentView(R.layout.activity_main);
}
  1. 在清单中继承样式:

    <activity android:name=".MainActivity" android:theme="@style/generalnotitle">
    
于 2016-10-23T21:32:44.337 回答
44

如果您使用,this.requestWindowFeature(Window.FEATURE_NO_TITLE)用户仍然可以在启动动画期间看到标题栏片刻,当活动开始时onCreate。如果您使用@android:style/Theme.Black.NoTitleBar如下所示,则在启动动画期间将不会显示标题栏。

<activity 
    android:name=".MainActivity" 
    android:label="My App"
    android:theme="@android:style/Theme.Black.NoTitleBar"
    android:screenOrientation="portrait">

上面的示例显然会覆盖您现有的应用程序主题,如果您有现有的主题然后添加<item name="android:windowNoTitle">true</item>到它。

于 2011-10-17T07:04:32.883 回答
34

当我尝试使用所有那些高票数的答案时,我的应用程序总是崩溃。(我认为这与“@android:style”有关?)

对我来说最好的解决方案是使用以下内容:

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

没有标题/标题栏了。只需将其放置在<application>...</application>或中,<activity>...</activity>具体取决于您(不)是否希望在整个应用程序中或仅在特定活动中使用它。

于 2016-06-10T21:46:07.737 回答
18

创建一个主题如下。

 <!-- Variation on the Light theme that turns off the title -->
<style name="MyTheme" parent="android:style/Theme.Black">
    <item name="android:windowNoTitle">true</item>
</style>
于 2012-12-21T10:59:16.130 回答
17

只需getActionBar().hide();在您的主要活动onCreate()方法中使用。

于 2012-12-27T13:02:08.567 回答
17

添加

<item name="android:windowNoTitle">true</item>

在 AppTheme (styles.xml) 内

于 2014-01-29T14:35:03.763 回答
16

对于AppCompat,以下解决方案对我有用:

styles.xml在您的和设置中添加没有操作栏的新主题样式parent="Theme.AppCompat.NoActionBar"

<style name="SplashTheme" parent="Theme.AppCompat.NoActionBar">

    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimary</item>
    <item name="colorAccent">@color/colorAccent</item>
    <item name="android:windowBackground">@color/colorPrimary</item>

</style>


现在为您的初始屏幕活动实现相同的主题样式androidManifest.xml

<activity
        android:name=".ActivityName"
        android:theme="@style/SplashTheme"> // apply splash them here 

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

这是结果:

在此处输入图像描述

于 2017-12-22T15:09:09.697 回答
15

如果您从以下位置替换定义,您只需要更改AppThemeStyle.xml 中的样式DarkActionBar

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

NoActionBar

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

AndroidManifast.xml 中定义的 AppTheme

于 2016-06-02T16:29:18.407 回答
14

在您的onCreate方法中,使用以下代码段:

this.requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_main);
于 2012-11-20T18:49:57.160 回答
13

您可以在您的 java 文件中使用此代码

在设置或加载视图之前添加此行

requestWindowFeature(Window.FEATURE_NO_TITLE); 
setContentView(R.layout.activity_main);
于 2014-06-08T05:15:51.177 回答
12

为您使用的主题添加这两个:

    <item name="windowActionBar">false</item>
    <item name="android:windowNoTitle">true</item>
于 2014-12-14T13:18:34.930 回答
11

将此样式添加到您的 style.xml 文件

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

之后,在您不想看到标题栏的特定活动中将此样式名称引用到您的 androidManifest.xml 中,如下所示。

<activity android:name=".youractivityname"
     android:theme="@style/AppTheme.NoActionBar">
</activity>
于 2016-10-13T19:16:37.407 回答
11

我相信在2020 年只有一个答案

将以下行添加到 styles.xml

<item name="windowNoTitle">true</item>
于 2020-06-13T11:01:02.467 回答
9

我正在使用支持小部件 Toolbar v7。所以,为了能够删除或隐藏标题,我们需要写这个。

Toolbar myToolbar = (Toolbar) findViewById(R.id.my_toolbar);
setSupportActionBar(myToolbar);

//Remove¡ing title bar
getSupportActionBar().setDisplayShowTitleEnabled(false);
于 2016-05-13T20:51:28.167 回答
9

为了隐藏标题和操作栏,我这样做了:

在清单的活动标签中:

android:theme="@style/AppTheme.NoActionBar"

在 setContentView 之前的 Activity.java 中:

this.requestWindowFeature(Window.FEATURE_NO_TITLE);
this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);

IE,

//删除标题栏

this.requestWindowFeature(Window.FEATURE_NO_TITLE);

//移除通知栏

this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);

注意:您需要先保留这些行setContentView

于 2017-03-23T10:26:42.863 回答
8

或者,如果您想在任何时候隐藏/显示标题栏:

private void toggleFullscreen(boolean fullscreen)
{
    WindowManager.LayoutParams attrs = getWindow().getAttributes();
    if (fullscreen)
    {
        attrs.flags |= WindowManager.LayoutParams.FLAG_FULLSCREEN;
    }
    else
    {
        attrs.flags &= ~WindowManager.LayoutParams.FLAG_FULLSCREEN;
    }
    getWindow().setAttributes(attrs);
}
于 2013-04-26T07:02:42.080 回答
8

我更喜欢:-

  • AppTheme(整个应用程序主题)
  • AppTheme.NoActionBar(没有操作栏或工具栏的主题)
  • AppTheme.NoActionBar.FullScreen(没有操作栏和没有状态栏的主题)

主题风格如:-

<style name="AppTheme" parent="Theme.MaterialComponents.Light.DarkActionBar">
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorDarkPrimary</item>
    <item name="colorAccent">@color/colorAccent</item>
</style>

<style name="AppTheme.NoActionBar" parent="AppTheme">
    <item name="windowActionBar">false</item>
    <item name="windowNoTitle">true</item>
</style>

<style name="AppTheme.NoActionBar.FullScreen" parent="AppTheme.NoActionBar">
    <item name="android:windowFullscreen">true</item>
</style>

在 onCreate 方法中的 super.onCreate(savedInstanceState) 之后也放下面的代码

super.onCreate(savedInstanceState)    
this.window.setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
                WindowManager.LayoutParams.FLAG_FULLSCREEN)
于 2020-01-13T18:27:04.287 回答
7

就我而言,如果您使用的是 android studio 2.1,并且您的编译 SDK 版本是 6.0,那么只需转到您的 manifest.xml 文件,并更改以下代码:

这是代码:

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

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/Theme.AppCompat.NoActionBar">
        <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>

这是截图(见高亮代码): 在此处输入图像描述

于 2016-05-11T14:14:50.033 回答
7

这解决了我的问题

在表现我的活动:

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

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

在“AppTheme”名称下的风格:

<resources>

    <!-- Base application theme. -->
    <style name="AppTheme"
        parent="Theme.AppCompat.Light.NoActionBar">
        **<item name="windowActionBar">false</item>
        <item name="android:windowNoTitle">true</item>**
        <!-- Customize your theme here. -->
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
    </style>

</resources>
于 2016-07-19T12:40:49.453 回答
6

第一个答案是闪石。这是我的解释:添加:

this.requestWindowFeature(Window.FEATURE_NO_TITLE);
this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);

在 oncreate() 方法中。

前:

super.onCreate(savedInstanceState);
setContentView(R.layout.activity_start);

(不仅仅是在 setContentView 之前)如果不这样做,你将强制关闭。+1 这个答案。

于 2015-02-21T10:04:28.713 回答
5

如果你按照用户YaW​​和Doug Paul所说的去做,那么你必须记住,必须在调用 setContentView 之前设置窗口功能。如果没有,你会得到一个例外。

于 2012-08-06T19:53:10.013 回答
5

我发现了可能发生此错误的两个原因。

一。Window 标志已设置在内部super.onCreate(savedInstanceState);,在这种情况下,您可能需要使用以下命令顺序:

this.requestWindowFeature(Window.FEATURE_NO_TITLE);
this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);      

super.onCreate(savedInstanceState);

二。您在 TitleBar 中有 Back/Up 按钮,这意味着当前活动是另一个活动的分层子活动,在这种情况下,您可能需要注释掉或从onCreate方法内部删除这行代码。

getActionBar().setDisplayHomeAsUpEnabled(true);
于 2012-09-25T08:33:26.313 回答
5

这就是完整代码的样子。注意 android.view.Window 的导入。

package com.hoshan.tarik.test;

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(R.layout.activity_main);
    }
}
于 2015-03-31T07:41:54.040 回答
5

像这样在 AndroidManifest.xml 上的活动中添加主题 @style/Theme.AppCompat.Light.NoActionBar

<activity
        android:name=".activities.MainActivity"
        android:theme="@style/Theme.AppCompat.Light.NoActionBar">
    </activity>
于 2016-10-11T17:07:39.933 回答
4

添加清单文件,

  android:theme="@android:style/Theme.Translucent.NoTitleBar"

将以下行添加到您的 java 文件中,

  this.requestWindowFeature(Window.FEATURE_NO_TITLE);
于 2017-03-20T06:29:07.707 回答
4

我正在使用 Android Xamarin,这对我有用。

SupportActionBar.Hide();
SetContentView(Resource.Layout.activity_main);
于 2019-04-05T07:45:00.330 回答
3

只需将您的 App 主题的父标签更改为“Theme.AppCompat.Light.NoActionBar”

于 2016-02-08T07:29:04.653 回答
2

咳咳,您可以将主题应用于XML中的单个活动,例如无标题。换句话说,将它从您的应用程序标签中取出,打开标签声明并将其放入所需的活动标签中。

于 2010-04-09T19:15:33.760 回答
2

这篇文章中提到了它,但没有人明确提到它,所以也许这会节省一些时间。如果您像我一样,并且有多个类扩展了一个扩展 ActionBarActivity 的根类,那么尝试将该活动设置为 NoTitleBar/NoActionBar 会引发错误可能不是很明显,特别是:

“您需要在此活动中使用 Theme.AppCompat 主题(或后代)”

您可以将扩展更改为 Activity 来解决此问题。

于 2015-07-20T22:51:17.960 回答
1

我使用@YaW 的解决方案从我的活动中删除了标题和通知。但是,显示对话框时会出现标题和通知。因此,要将其应用于对话框,请对对话框进行子类化,如下所示:

public class MyDialog extends android.app.Dialog{
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);

        super.onCreate(savedInstanceState);

        setContentView(R.layout.mydialog);
    }    
}
于 2015-09-18T21:39:40.143 回答
0

Android Studio 文档中的 WindowManager.LayoutParams 说 FLAG_FULLSCREEN 是“窗口标志:在显示此窗口时隐藏所有屏幕装饰(例如状态栏)。” 所以这个标志不会让我的内容填满整个屏幕。

于 2015-05-20T12:25:14.267 回答
0

就我而言,我的活动是扩展 AppCompatActivity。

class MyActivity: AppCompatActivity(){
    ...
}

因此,其他答案无效。我不得不这样做:

class MyActivity: AppCompatActivity(){
    this.supportRequestWindowFeature(Window.FEATURE_NO_TITLE)
}

它有效!

如果您的活动扩展了 AppCompatActivity,只需在 requestWindowFeature(...) 之前添加“支持”。

于 2021-09-23T19:37:46.037 回答