Cómo ocultar la barra de título de una actividad en XML con un tema personalizado existente

Quiero ocultar la barra de título para algunas de mis actividades. El problema es que apliqué un estilo a todas mis actividades, por lo tanto, no puedo simplemente establecer el tema en @android:style/Theme.NoTitleBar.

Usando el patrón de velas del Sin barra de título tema como padre de mi estilo eliminaría la barra de título de todas mis actividades.

¿Puedo establecer un elemento sin estilo de título en algún lugar?

preguntado el 07 de abril de 10 a las 05:04

30 Respuestas

Haz esto en tu onCreate() método.

//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 se refiere a Activity.

Respondido 24 Abr '15, 22:04

Gran respuesta. Sin embargo, no tiene que hacer ambas cosas, eliminar la barra de notificaciones puede ser excesivo. - jim blackler

Asegúrate de ponerlo antes la llamada a setContentView (R.id.x), de lo contrario se bloqueará. La razón no fue inmediatamente obvia para mí. 08-13 12: 47: 33.561 E / AndroidRuntime (9125): java.lang.RuntimeException: No se puede iniciar la actividad ComponentInfo {com.myapp / com.myapp.SplashActivity}: android.util.AndroidRuntimeException: se debe llamar a requestFeature () antes de agregar contenido - mobibob

Realmente debería mencionar que cuando usa requestWindowFeature (), ocurrirá un cierre forzado si ejecuta esta línea después de agregar cualquier contenido. Y en una nota al margen, el método XML es mucho más seguro y también separa la estructura de la página de su código, (que es el toda propósito de los XML en primer lugar.) - b1nary.atr0phy

Esto no funciona con API 22. Todavía veo la barra de título inicialmente cuando se inicia la aplicación. - user2966445

funciona si su actividad extiende la Actividad NO AppCompatActivity, es decir, su clase debe declararse como clase pública myActi extiende la Actividad {} - Manpreet Singh Dhillon

Puede modificar su AndroidManifest.xml:

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

vea la sección android:theme="@android:style/Theme.Black.NoTitleBar" si no necesita una actividad de pantalla completa.

Nota: Si ha utilizado una vista 'predeterminada' antes, probablemente también debería cambiar la clase principal de AppCompatActivity a Activity.

Respondido el 05 de diciembre de 17 a las 10:12

No sé por qué. Solo usé el proyecto predeterminado y agregué una actividad. El autocompletado no funciona, pero el tema está ahí. - Redax

android:theme="@android:style/Theme.Black.NoTitleBar" probablemente sea más útil a menos que estés creando un juego, Chris S

O to light theme. - fernando js

No sé por qué, pero esto está bloqueando mi aplicación. ¿Alguna ayuda? - Akeswar Jha

@Akeshwar: es posible que tenga que meterse con su archivo styles.xml. Por ejemplo, cambiar to . If you do that, you don't need to change your AndroidManifest.xml file. (I was getting the crash, too, until I did this fix.) - Clausura británica

Ahora hice lo siguiente.

Declaré un estilo heredando todo de mi estilo general y luego deshabilité la barra de título.

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

Ahora puedo configurar este estilo para cada actividad en la que quiero ocultar la barra de título sobrescribiendo el estilo de toda la aplicación y heredando todas las demás informaciones de estilo, por lo que no hay duplicación en el código de estilo.

Para aplicar el estilo a una actividad en particular, abra AndroidManifest.xml y agregue el siguiente atributo al activity etiqueta;

<activity
    android:theme="@style/generalnotitle">

respondido 06 mar '18, 18:03

Creo que creó un estilo llamado "general" y simplemente lo está extendiendo. Simplemente quítelo para su propio uso. - RCL

+1 por responder la pregunta, en lugar de simplemente especificar la forma más obvia de lograr resultados similares como lo hacen la mayoría de las otras respuestas a esta pregunta. Es una pena que tuvieras que responder tu propia pregunta para obtener una respuesta precisa ... - Jules

esta respuesta es la mejor. Incluso puede usar cualquier otro tema proporcionado por Android sin barra de título. Muchas gracias por compartir - amigo narendra

Creo que esta es una solución más elegante que programática this.requestWindowFeature (Window.FEATURE_NO_TITLE); porque en este caso algunos "parpadeos" del título aún son visibles - arriba del sol

La mejor respuesta a la pregunta de OP :) Pero aún así, eso no elimina la barra de título de mi actividad (API19) - 1111161171159459134

No me gusta el this.requestWindowFeature(Window.FEATURE_NO_TITLE); porque la barra de título aparece brevemente y luego desaparece.

Tampoco me gusta el android:theme="@android:style/Theme.NoTitleBar" porque perdí todos los cambios 3.0+ Holo a los que los usuarios de los nuevos dispositivos se han acostumbrado. Entonces encontré esta solución.

En su res / valores carpeta crea un archivo llamado styles.xml (Si aún no existe). En ese archivo coloque el siguiente código:

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

A continuación, cree un res / valores-v11 con otro styles.xml archivo (una vez más, puede que ya exista). En ese archivo coloque el siguiente código:

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

Y si está apuntando a 4.0+, cree un res / valores-v14 carpeta con otro styles.xml archivo (Sí, puede que ya esté allí). En ese archivo coloque el siguiente código:

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

Finalmente, con todos estos archivos creados, abra su AndroidManifiest.xml archivo puede agregar el código:

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

a la etiqueta de actividad de la actividad para la que no desea un título o la etiqueta de la aplicación si desea que se aplique a toda la aplicación.

Ahora sus usuarios obtendrán los temas asociados con la versión de su dispositivo con el diseño de pantalla que desee.

PS Cambiando el valor a android:theme="@style/Theme.FullScreen" tendrá el mismo efecto, pero también eliminará la barra de notificaciones.

Respondido el 02 de enero de 13 a las 01:01

Ellos ... esto funciona bien para lo que has contado, pero las imágenes chirriaron al cambiar los temas. Entonces lo que hay que hacer ??? - Arun

@arun: no he tenido ningún problema con la imagen al usar este método. ¿A qué te refieres con chilló? - devin stewart

La mejor respuesta ... this.requestWindowFeature (Window.FEATURE_NO_TITLE); no es adecuado y cierto perdí el tema original ... Gracias @DevinStewart ... acepta +1 por tu explicación :) - Lynndragon

¡Ah, tonta de mí! Estaba usando ActionBarActivity, lo cual no tiene sentido si quieres QUITAR LA ACTIONBAR. Cambiar a una actividad simple o FragmentActivity permite que esta buena solución funcione a la perfección. - SM Bigggs

"Desafortunadamente, YourApp se ha detenido". - chris allinson

La barra de título se puede eliminar de dos maneras, como se menciona en la página del desarrollador de Android:

En la manifest.xml archivo:

  1. Agregue lo siguiente en application si desea eliminarlo para todas las actividades en una aplicación:

    <application android:theme="@android:style/Theme.Black.NoTitleBar">
    
  2. O para una actividad en particular:

    <activity android:theme="@android:style/Theme.Black.NoTitleBar">
    

respondido 16 mar '14, 14:03

Es mejor usar android: theme = "@ android: style / Theme.DeviceDefault.NoActionBar.Fullscreen" en lugar de black.theme. Deje que el dispositivo maneje el tema. pero gracias, usé tu enfoque - Varand Pezeshkian

la respuesta correcta probablemente sea no extender ActionbarActivity en lugar de extender solo Activity


si todavía usa la actividad de la barra de acciones, parece que esto está funcionando:

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

parece que esto también funciona:

styles.xml:

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

Podría hacer como escribió Scott Biggs. este tipo de obras. excepto que entonces no hay tema. quiero decir que el fondo del menú de configuración es transparente:

solo cambia

public class MainActivity extends ActionBarActivity {

a Actividad o FragmentoActividad

public class MainActivity extends Activity  {

sin embargo, podría hacer que se vea lo suficientemente bien usando material design y no quitar la barra de acción: https://gist.github.com/shimondoodkin/86e56b3351b704a05e53

  1. establecer icono de aplicación
  2. establece los colores de la barra de acción para que coincidan con el diseño.
  3. establecer el icono en el menú de configuración
  4. agregar más iconos (botones en la parte superior)

es un ejemplo de estilo de barra de acción de compatibilidad de diseño de materiales.

respondido 08 mar '16, 20:03

¡Cambiar la ActionBarActivity a Activity funcionó para mí! - DritanX

¡Tu primera respuesta funcionó para mí! - RyanG

lo que funciona para mi:

1- en styles.xml:

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

2- en MainActivity

@Override
protected void onCreate(Bundle savedInstanceState) {          
    super.onCreate(savedInstanceState);
    getSupportActionBar().hide(); //<< this
    setContentView(R.layout.activity_main);
}
  1. en manifiesto heredar el estilo:

    <activity android:name=".MainActivity" android:theme="@style/generalnotitle">
    

respondido 11 nov., 18:07

Como se describió anteriormente, a veces no funciona desde xml. No sé exactamente por qué, no estoy completamente seguro, pero getSupportActionBar().hide(); dentro de onCreate () {} hará el trabajo - ZeePee

muchas gracias, esta es la respuesta más clara y sencilla: Siwei

Si utiliza this.requestWindowFeature(Window.FEATURE_NO_TITLE) el usuario aún podrá ver la barra de título solo por un momento durante la animación de inicio cuando la actividad comience a través de onCreate. Si utiliza @android:style/Theme.Black.NoTitleBar como se muestra a continuación, la barra de título no se mostrará durante la animación de inicio.

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

El ejemplo anterior obviamente anulará el tema de su aplicación existente, si tiene un tema existente, agregue <item name="android:windowNoTitle">true</item> a la misma.

Respondido 29 Oct 11, 00:10

Mi actividad es de instancia única con @android: style / Theme.Black.NoTitleBar, pero el uso de este código funcionará cuando se cree la actividad La primera vez que conozca la actividad de SingleInstance y luego de nuevo no se creó, por lo que solo usa el método OnNewItent Pero ahora mi problema es cuando se muestra la actividad. es solo Mostrar barra de estado durante 4 segundos. ¿Cómo puedo salir de esto? Aquí está mi pregunta El enlace es stackoverflow.com/questions/9308767/… - Herry

cuando traté de usar todas esas respuestas altamente votadas, mi aplicación siempre fallaba. (Creo que tiene algo que ver con el "estilo @android:"?)

La mejor solución para mí fue usar lo siguiente:

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

Ya no hay encabezado / barra de título. Solo colóquelo en el <application>...</application> or <activity>...</activity> dependiendo de si lo desea (no) en toda la aplicación o solo en una actividad específica.

Respondido 17 Oct 17, 17:10

Esta es la mejor manera (¿o la única?) ¡Si la aplicación "extiende AppCompatActivity"! - Ferrarezi

Crea un tema como se muestra a continuación.

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

Respondido el 21 de diciembre de 12 a las 10:12

Añada

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

dentro de AppTheme (styles.xml)

Respondido el 29 de enero de 14 a las 14:01

Sólo tiene que utilizar getActionBar().hide(); en tu actividad principal onCreate() método.

respondido 16 mar '14, 14:03

Para AppCompat, la siguiente solución funcionó para mí:

Agregue un nuevo estilo de tema sin barra de acción en su styles.xml y establecer 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>


Ahora implemente el mismo estilo de tema en la actividad de la pantalla de presentación en 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>

Aquí está el resultado:

enter image description here

Respondido el 22 de diciembre de 17 a las 15:12

Solo necesitas cambiar AppTheme style en Style.xml si reemplaza la definición de DarkActionBar

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

a NoActionBar

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

el AppTheme definido en AndroidManifast.xml

Respondido el 02 de junio de 16 a las 17:06

En su onCreate método, utilice el siguiente fragmento:

this.requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_main);

Respondido el 25 de Septiembre de 18 a las 12:09

la aplicación comienza con el título y luego se oculta, muestra mostrar la aplicación sin título - Bachask8

Puede usar este código en su archivo java

agregue esta línea antes de configurar o cargar su vista

requestWindowFeature(Window.FEATURE_NO_TITLE); 
setContentView(R.layout.activity_main);

Respondido el 08 de junio de 14 a las 06:06

Agregue ambos para el tema que usa:

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

Respondido el 14 de diciembre de 14 a las 13:12

"Desafortunadamente, YourApp se ha detenido". - chris allinson

<item name="windowActionBar">false</item> hace que la aplicación se bloquee. puede ser que esto es lo que quiso decir @ChrisAllinson: Mubashar

No puedo confirmar. Funciona bien para mi. - desarrollador de Android

Agregue este estilo a su archivo style.xml

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

Después, haga referencia a este nombre de estilo en su androidManifest.xml en una actividad particular en la que no desea ver la barra de título, como se muestra a continuación.

<activity android:name=".youractivityname"
     android:theme="@style/AppTheme.NoActionBar">
</activity>

Respondido 13 Oct 16, 20:10

olvidaste el android: prefijo antes de los nombres en su primer bloque de código :) - stam kaly

Estoy usando un widget de soporte Toolbar v7. Entonces, para poder eliminar u ocultar el título, debemos escribir esto.

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

//Remove¡ing title bar
getSupportActionBar().setDisplayShowTitleEnabled(false);

contestado el 13 de mayo de 16 a las 21:05

Respuesta perfecta. - asesha george

Para ocultar tanto la barra de título como la barra de acción, hice esto:

En la etiqueta de actividad de Manifiesto:

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

En Activity.java antes de setContentView:

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

es decir,

// Eliminar la barra de título

this.requestWindowFeature (Window.FEATURE_NO_TITLE);

// Eliminar barra de notificaciones

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

NOTA: Debe mantener estas líneas antes setContentView

Respondido el 23 de enero de 18 a las 12:01

No tengo tanta experiencia en Java o en la creación de aplicaciones de Android, por lo que su comentario de que esas líneas de código deben ubicarse antes de setContentView es lo que realmente ayudó. ¡Gracias! - Kyle van Til

Creo que hay solo respuesta de una línea por esto en 2020

Agregue la siguiente línea a styles.xml

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

Respondido el 13 de junio de 20 a las 12:06

En mi versión, agregas la línea al final de res / values ​​/ themes / themes.xml. - marca kortink

O si desea ocultar / mostrar la barra de título en cualquier momento:

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

Respondido 26 Abr '13, 08:04

En mi caso, si está utilizando Android Studio 2.1 y su versión de SDK de compilación es 6.0, simplemente vaya a su archivo manifest.xml y cambie el siguiente código:

Aquí está el código:

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

Y aquí está la sesión de recorte (ver el código de resaltado): enter image description here

contestado el 11 de mayo de 16 a las 18:05

Bienvenido a SO. Publique su código directamente en SO en lugar de publicar una imagen de su código. - ricardo erickson

Esto resolvió mi problema

En manifiesto mi actividad:

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

En estilo bajo el nombre "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>

Respondido 19 Jul 16, 13:07

La primera respuesta es anfíbol. aquí está mi explicación: agregar:

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

en el método oncreate ().

antes:

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

(no solo antes de setContentView) si no hace esto, obtendrá un cierre forzado. +1 en esta respuesta.

Respondido 21 Feb 15, 10:02

Así es como se ve el código completo. Tenga en cuenta la importación de 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);
    }
}

respondido 31 mar '15, 08:03

Agregue theme @ style / Theme.AppCompat.Light.NoActionBar en su actividad en AndroidManifest.xml como este

<activity
        android:name=".activities.MainActivity"
        android:theme="@style/Theme.AppCompat.Light.NoActionBar">
    </activity>

Respondido 11 Oct 16, 18:10

Encontré dos razones por las que podría ocurrir este error.

Uno. Las banderas de la ventana ya están configuradas dentro super.onCreate(savedInstanceState); en cuyo caso es posible que desee utilizar el siguiente orden de comandos:

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

super.onCreate(savedInstanceState);

Dos. Tiene el botón Atrás / Arriba dentro de la barra de título, lo que significa que la actividad actual es un hijo jerárquico de otra actividad, en cuyo caso es posible que desee comentar o eliminar esta línea de código desde el interior de la onCreate método.

getActionBar().setDisplayHomeAsUpEnabled(true);

Respondido el 25 de Septiembre de 12 a las 09:09

Gracias, me ayudó a configurar NoTitle y FullScreen sin cambiar el tema. mohsen afshin

Si haces lo que los usuarios Guiñada y doug pablo Por ejemplo, debe tener en cuenta que las características de la ventana deben configurarse antes de llamar a setContentView. Si no, obtendrá una excepción.

respondido 16 mar '14, 14:03

agregar en el archivo más múltiple,

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

agregue la siguiente línea en su archivo java,

  this.requestWindowFeature(Window.FEATURE_NO_TITLE);

respondido 20 mar '17, 06:03

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.