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

StackOverflow https://stackoverflow.com/questions/2591036

Pregunta

Quiero ocultar la barra de título para algunos de mis actividades.El problema es que he aplicado un estilo para todas mis actividades, por lo tanto, simplemente no me puedo fijar el tema para @android:style/Theme.NoTitleBar.

El uso de la NoTitleBar tema como un padre para mi estilo de quitar la barra de título de todas mis actividades.

Puedo establecer un no estilo de título del elemento en algún lugar?

¿Fue útil?

Solución 3

Ahora hice lo siguiente.

I declaró un estilo que hereda todo de mi estilo general y luego la desactivación de la barra de título.

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

Ahora se puede definir este estilo para cada actividad en la que quiero para ocultar la barra de título sobrescribir el estilo de la aplicación amplia y heredando todas las otras informaciones de estilo, para ello hay duplicación en el código de estilo.

Para aplicar el estilo a una actividad particular, AndroidManifest.xml abierto y añadir el siguiente atributo a la etiqueta activity;

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

Otros consejos

hacer esto en su método 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 se refiere a la Activity.

Puede modificar AndroidManifest.xml:

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

o uso android:theme="@android:style/Theme.Black.NoTitleBar" si usted no necesita una Actividad de pantalla completa.

Nota:. Si ha utilizado una vista 'por defecto' antes, es probable que también debe cambiar la clase padre de AppCompatActivity a Activity

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

También no me gusta la android:theme="@android:style/Theme.NoTitleBar" porque he perdido toda la 3.0+ Holo cambios que los usuarios de los nuevos dispositivos se han acostumbrado a. Así que me encontré con esta solución.

res / valores carpeta de hacer un archivo llamado styles.xml (Si no existe). En ese lugar archivo 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 una res / valores-v11 con otro archivo styles.xml (Una vez más, esto ya puede existir). En ese lugar archivo 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 se dirigen a 4.0+, crear un res / valores-v14 carpeta con otro styles.xml archivo (Sí, pueden estar ya allí). En ese lugar archivo 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>

Por último, con todos estos archivos creados, abra el archivo AndroidManifiest.xml puede agregar el código:

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

a la etiqueta de la actividad de la actividad que desea ningún título a favor o en la etiqueta de aplicación si desea que se aplique a toda la aplicación.

Ahora sus usuarios tendrán los temas relacionados con su versión del dispositivo con la pantalla de diseño que desee.

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

La barra de título se puede retirar de dos formas como se menciona en la página de desarrolladores de Android:

En el archivo manifest.xml:

  1. Añadir lo siguiente en application si desea eliminarlo de todas las actividades en una aplicación:

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

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

Probablemente la respuesta correcta es que no se extienden más ActionbarActivity extender simplemente Actividad


Si todavía utiliza la actividad actionbar Parece que esto está funcionando:

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

Parece que esta obra también:

styles.xml:

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

i podía hacer, como ya informó Scott Biggs. este tipo de obras. excepto que no hay tema a continuación. me refiero a los antecedentes del menú de configuración es transparente:

Sólo cambia

public class MainActivity extends ActionBarActivity {

para la actividad o FragmentActivity

public class MainActivity extends Activity  {

Sin embargo, me podría hacer que se vea lo suficientemente bueno usando el diseño de materiales no desea quitar la barra de acción: https://gist.github.com/shimondoodkin/86e56b3351b704a05e53

  1. conjunto de iconos de aplicaciones
  2. colores conjunto de barra de acción para que coincida con el diseño.
  3. conjunto de iconos de menú de configuración
  4. añadir más iconos (botones en la parte superior)

es por ejemplo de diseño de materiales actionbar compatibilidad peinado.

Si utiliza el usuario this.requestWindowFeature(Window.FEATURE_NO_TITLE) todavía será capaz de ver la barra de título sólo por un momento durante la animación de lanzamiento cuando la actividad se inicia a través de onCreate. Si utiliza @android:style/Theme.Black.NoTitleBar como se muestra a continuación y luego barra de título no se muestra durante la animación de lanzamiento.

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

ejemplo anterior, obviamente, se anulará su tema de la aplicación existente, si ya dispone de tema a continuación, añadir <item name="android:windowNoTitle">true</item> a ella.

lo que funciona para mí:

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 el manifiesto hereda el estilo:

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

cuando he intentado utilizar todas esas altas respuestas upvoted mi aplicación siempre se estrelló. (Creo que tiene algo que ver con el? "@Android: Estilo")

La mejor solución para mí era utilizar lo siguiente:

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

Sin encabezado / título de la barra más. Sólo tiene que colocar en el <application>...</application> o <activity>...</activity> dependiendo si (no) lo quiere en toda la aplicación o simplemente una actividad específica.

Crear un tema de la siguiente manera.

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

Agregar

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

dentro AppTheme (styles.xml)

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

Sólo tiene que AppTheme cambio en el estilo Style.xml si se reemplaza la definición de DarkActionBar

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

para NoActionBar

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

el AppTheme define en AndroidManifast.xml

Para AppCompat, siguiendo solución funcionó para mí:

Añadir nuevo estilo del tema sin barra de acción en su conjunto y 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>

Ahora
implementar el mismo estilo del tema a su actividad en la pantalla de bienvenida 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í es resultado:

 introducir descripción de la imagen aquí

Usted puede utilizar este código en el archivo java

agregar esta línea antes de instalar o cargar su punto de vista

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

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

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

Añadir ambas cosas para el tema que utilice:

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

Añadir este estilo para su archivo style.xml

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

Después de que la referencia de este nombre de estilo en su AndroidManifest.xml en la actividad perticular en el que no desea ver la barra de título, ya que, como a continuación.

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

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

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

Estoy usando una barra de herramientas de soporte para widgets v7. Por lo tanto, con el fin de ser capaz de eliminar u ocultar el título tenemos que escribir esto.

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

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

En mi caso, si está utilizando Android Studio 2.1 y la versión del SDK de compilación es de 6,0, a continuación, sólo tiene que ir a su archivo manifest.xml, y cambiar el código siguiente:

Este es 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á el rodaje del recorte (ver el código resaltado): introducir descripción de la imagen aquí

Esto resolvió mi problema

En mi actividad manifiesta:

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

Para ocultar tanto el título y la barra de acciones que hice esto:

En etiqueta de actividad de manifiesto:

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

En Activity.java antes setContentView:

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

es decir.,

// Quitar barra de título

  

this.requestWindowFeature (Window.FEATURE_NO_TITLE);

// eliminar la barra de notificación

  .

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

Nota: : Es necesario mantener estas líneas antes setContentView

En primer respuesta es anfíboles. Aquí está mi explique: añadir:

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

en OnCreate () método.

antes:

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

(no justo antes de setContentView) si no hacer esto u conseguirá forceclose. 1 esta respuesta.

He encontrado dos razones por las que podría producirse este error.

Un Las banderas Window están configurados ya establecidos 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 / hasta el interior de la barra de título, lo que significa que la actividad actual es un niño jerárquica de otra actividad, en cuyo caso es posible que desee comentar o eliminar esta línea de código desde el interior del método onCreate.

getActionBar().setDisplayHomeAsUpEnabled(true);

Así es como las miradas completos código como. 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);
    }
}

Añadir tema de estilo @ / Theme.AppCompat.Light.NoActionBar en su actividad en AndroidManifest.xml como esto

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

Si haces lo que los usuarios guiñada y Doug Paul por ejemplo, entonces usted tiene que tener en cuenta que las características de las ventanas deben establecerse antes de llamar setContentView. En caso contrario, obtendrá una excepción.

añadir en el archivo de Manifiesto,

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

añadir siguiente línea en el archivo de java,

  this.requestWindowFeature(Window.FEATURE_NO_TITLE);

Ejem, se puede aplicar temas a las actividades individuales en XML como ningún título. En otras palabras, lo saca de su etiqueta de aplicación, abra la declaración de la etiqueta y lo puso en la etiqueta de actividad deseada.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top