quitar - ocultar barra de navegacion android studio
Cómo ocultar la barra de título de una actividad en XML con un tema personalizado existente (30)
Añadir
<item name="android:windowNoTitle">true</item>
dentro de AppTheme (styles.xml)
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, simplemente no puedo establecer el tema en @android:style/Theme.NoTitleBar
.
Usar el tema NoTitleBar como padre para mi estilo eliminaría la barra de título de todas mis actividades.
¿Puedo configurar un elemento de estilo sin título en alguna parte?
Agrega este estilo a tu archivo style.xml
<style name="AppTheme.NoActionBar">
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
</style>
Después de eso, haga referencia a este nombre de estilo en su androidManifest.xml en la actividad especial 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>
Agregue los dos para el tema que usa:
<item name="windowActionBar">false</item>
<item name="android:windowNoTitle">true</item>
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>
Ahora hice lo siguiente.
Declaré un estilo heredando todo de mi estilo general y luego deshabilitando 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 que sobrescribe el estilo de toda la aplicación y que hereda 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 a la etiqueta de activity
;
<activity
android:theme="@style/generalnotitle">
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);
}
}
Crea un tema como el siguiente.
<!-- 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>
En mi caso, si está utilizando Android Studio 2.1, y su versión de SDK de compilación es 6.0, 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 toma de recortes (ver el código de resaltado):
En su método onCreate
, use el siguiente fragmento de onCreate
:
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_main);
Esta resuelto 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>
Estoy usando un widget de barra de herramientas v7. Entonces, para poder borrar u ocultar el Título necesitamos escribir esto.
Toolbar myToolbar = (Toolbar) findViewById(R.id.my_toolbar);
setSupportActionBar(myToolbar);
//Remove¡ing title bar
getSupportActionBar().setDisplayShowTitleEnabled(false);
Haz esto en tu 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
refiere a la Activity
.
He encontrado dos razones por las que este error puede ocurrir.
Uno. Los indicadores de ventana ya están establecidos dentro de 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 elemento secundario jerárquico de otra actividad, en cuyo caso es posible que desee comentar o eliminar esta línea de código dentro del método onCreate
.
getActionBar().setDisplayHomeAsUpEnabled(true);
La barra de título se puede eliminar de dos maneras, como se menciona en la página de Android para desarrolladores:
En el archivo manifest.xml
:
Agregue lo siguiente en la
application
si desea eliminarlo para todas las actividades en una aplicación:<application android:theme="@android:style/Theme.Black.NoTitleBar">
O para una actividad particular:
<activity android:theme="@android:style/Theme.Black.NoTitleBar">
La primera respuesta es anfíbol. Aquí está mi explicación: añadir:
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
en el método oncreate ().
antes de:
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_start);
(no solo antes de setContentView) si no haces esto, obtendrás forceclose. +1 esta respuesta.
No me gusta el this.requestWindowFeature(Window.FEATURE_NO_TITLE);
Porque la barra de título aparece brevemente, luego desaparece.
Tampoco me gusta el android:theme="@android:style/Theme.NoTitleBar"
porque perdí todos los cambios de Holo 3.0+ a los que se han acostumbrado los usuarios de los nuevos dispositivos. Así que me encontré con esta solución.
En su carpeta res / valores, cree 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 / values-v11 con otro archivo styles.xml (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 la versión 4.0+, cree una carpeta res / values-v14 con otro archivo styles.xml (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 archivo AndroidManifiest.xml y podrá agregar el código:
android:theme="@style/Theme.NoTitle"
a la etiqueta de actividad de la actividad para la que no desea título o la etiqueta de 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 Al cambiar el valor a android:theme="@style/Theme.FullScreen"
tendrá el mismo efecto, pero también elimina la barra de notificaciones.
O si 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);
}
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 establezca 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 su actividad de pantalla de androidManifest.xml
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:
Para ocultar el título y 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 : setContentView
mantener estas líneas antes de setContentView
Por ejemplo, puede aplicar temas a actividades individuales en XML , como sin título. En otras palabras, sáquelo de su etiqueta de aplicación, abra la declaración de etiqueta y colóquela en la etiqueta de actividad deseada.
Puedes modificar tu AndroidManifest.xml
:
<activity android:name=".MainActivity"
android:label="@string/app_name"
android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen">
o use android:theme="@android:style/Theme.Black.NoTitleBar"
si no necesita una Actividad de pantalla completa.
Nota: Si ha usado una vista ''predeterminada'' antes, probablemente también debería cambiar la clase padre de AppCompatActivity
a Activity
.
Puedes usar este código en tu archivo java
agrega esta línea antes de configurar o cargar tu vista
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_main);
Si hace lo que dicen los usuarios YaW y Doug Paul , debe tener en cuenta que las características de la ventana deben configurarse antes de llamar a setContentView. Si no, obtendrás una excepción.
Si utiliza this.requestWindowFeature(Window.FEATURE_NO_TITLE)
usuario aún podrá ver la barra de título solo por un momento durante la animación de inicio cuando la actividad comienza a través de onCreate
. Si usa @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 tu aplicación existente, si tienes un tema existente, entonces agrega <item name="android:windowNoTitle">true</item>
.
Simplemente use getActionBar().hide();
en tu actividad principal en el método onCreate()
.
Solo necesita cambiar el estilo de AppTheme 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
añadir 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);
cuando traté de usar todas esas respuestas altas, mi aplicación siempre fallaba. (Creo que tiene algo que ver con el "@android: estilo"?)
La mejor solución para mí fue usar lo siguiente:
android:theme="@style/Theme.AppCompat.NoActionBar"
No hay encabezado / barra de título más. Solo colóquelo en la <application>...</application>
o <activity>...</activity>
dependiendo de si (no) lo quiere en toda la aplicación o solo en una actividad específica.
la respuesta correcta probablemente sea no extender ActionbarActivity en lugar de extender solo Actividad
Si todavía usas la actividad de la barra de acción 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 funciona también:
styles.xml:
<style name="AppBaseTheme" parent="Theme.AppCompat.Light" >
<item name="android:windowNoTitle">true</item> <!-- //this -->
</style>
Podría hacer como lo escribió Scott Biggs. este tipo de obras excepto que no hay tema entonces. Me refiero a que el fondo del menú de configuración es transparente:
solo cambia
public class MainActivity extends ActionBarActivity {
a Actividad o FragmentActividad
public class MainActivity extends Activity {
sin embargo, podría hacer que se vea lo suficientemente bien utilizando el diseño del material y no eliminar la barra de acción: https://gist.github.com/shimondoodkin/86e56b3351b704a05e53
- establecer el icono de la aplicación
- Establecer los colores de la barra de acción para que coincida con el diseño.
- configurar icono en el menú de configuración
- añadir más iconos (botones en la parte superior)
Es por ejemplo de compatibilidad de diseño de materiales de estilo de barra de acción.
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);
}
En manifiesto heredamos el estilo:
<activity android:name=".MainActivity" android:theme="@style/generalnotitle">