Cómo deshabilitar la barra de acción de forma permanente


138

Puedo ocultar la barra de acción en nido de abeja usando este código:

getActionBar().hide();

Pero cuando se abre el teclado y el usuario copia y pega cualquier cosa, la barra de acción se muestra nuevamente. ¿Cómo puedo desactivar la barra de acción de forma permanente?


2
Encontré la respuesta hhh <activity android: theme = "@ android: style / Theme.NoTitleBar.Fullscreen" ....>
Biji

1
que no es una barra de acción cuando intenta copiar, pegue su vista predeterminada.
Padma Kumar

sí, pero después del fin de copiar y pegar, todavía no se desvaneció
Biji

getSupportActionBar (). hide ();
Ameya Salagre

Respuestas:


251

Si está utilizando Theme.Holo.Lighty desea utilizar la Theme.Holo.Light.NoActionBarvariante en dispositivos pre 3.2, puede agregar esto a su styles.xml:

<style name="NoActionBar" parent="@android:style/Theme.Holo.Light">
    <item name="android:windowActionBar">false</item>
    <item name="android:windowNoTitle">true</item>
</style> 

y luego configúrelo como el tema de su actividad:

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

8
Esta es la respuesta correcta. No elimina la temática personalizada como la solución de @ Biji.
phreakhead

1
¿Alguna idea de cuál sería la bandera adicional para ocultar la barra de notificaciones?
jesses.co.tt

1
También me pareció necesario heredar de FragmentActivity en lugar de ActionBarActivity.
Meanman

44
@ jesses.co.tt La barra de notificaciones se puede eliminar usando<item name="android:windowFullscreen">true</item>
Mike Baxter

Esto no funcionó para mí. Usó lo siguiente: stackoverflow.com/questions/29790070/…
Christopher Smit

116

Al establecer el tema de actividad en Manifiesto,

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

Esta parece ser la única forma adecuada de hacerlo. especialmente si tienes un relativo relativo en la parte inferior ...
jcfrei

1
Por desgracia, esta es la única forma en que puedo ir a trabajar. Elimina la temática personalizada, pero es realmente lo único que elimina por completo el ActionBar, para mí.
RileyE

3
Esto no funciona con la aplicación del tema AppCompat en el nuevo ADT. No creo que luchar contra esto, ¡tratar de deshacerse por completo de AppCompat sea una buena solución tampoco! He intentado el enfoque de @ monchote y funciona para mí
ericn

esto debería ser <activity android: theme = "@ android: style / Theme.NoTitleBar"> en lugar de <activity android: theme = "@ android: style / Theme.NoTitleBar.Fullscreen">
Amandeep Rohila

En Samsung Galaxy J2 hace que la aplicación se bloquee pero no hay problemas en Nexus 9
Suici Doga


30
<application
    .
    .
    android:theme="@android:style/Theme.Holo.Light.NoActionBar"
    . >

tal vez esto te ayude


3
Tenga en cuenta que este método requiere un mínimo de api nivel 13
Olumide

23

Con Android Studio, la superclase de actividad generada por defecto es ActionBarActivityy luego, ninguna solución en otras respuestas funciona. Para resolver solo cambia la superclase:

public class xxxActivity extends ActionBarActivity{

a:

public class xxxActivity extends Activity {

Esto lo hizo por mi. Gracias por tu ayuda.
j_fulch

17

Si desea obtener pantalla completa sin actionBar y Title.

Añádelo en style.xml

<style name="AppTheme.NoActionBar" parent="Theme.AppCompat.Light.DarkActionBar">
      <item name="windowActionBar">false</item>
      <item name="windowNoTitle">true</item>
      <item name="android:windowFullscreen">true</item>
</style>

y usa el estilo en manifest.xml.

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

12

La mejor manera que encontré que proporciona temas personalizados y ninguna barra de acción, es crear una Superclase para todas las actividades en mi proyecto y en onCreate () llame a la siguiente línea de código:

this.requestWindowFeature(Window.FEATURE_NO_TITLE);

Siempre funciona para mi. El único problema en este enfoque es que verá una barra de acción durante una fracción de segundo al iniciar la aplicación (no la actividad, la aplicación completa).


12
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_my);
    getSupportActionBar().hide();
}

12

Vaya a styles.xml Cambie este DarkActionBar a NoActionBar

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

7

Puede forzar ocultar la barra de acción simplemente:

ActionBar  actionbar = getSupportActionBar();
actionBar.hide();

Solo usa tu tema predeterminado.


7

Si solo desea un tema sin barra de acción, puede usar la variante 'NoActionBar', por ejemplo. si su tema base es el siguiente

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

entonces puedes usar

<style name="AppThemeNoActionBar" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
</style>

Pero si desea conservar las propiedades de su tema principal, es decir, AppTheme, puede hacer lo siguiente

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

Puede conservar todas las propiedades de su tema base de esta manera y no tiene que agregarlas explícitamente en su tema NoActionBar :)


6

No uses el tema Holo y la barra de acción desaparecerá. Este código me funciona en API 8+, con soporte lib v7:

<style name="NoActionBar" parent="@style/Theme.AppCompat.Light">
<item name="android:windowNoTitle">true</item>
</style>

establece ese tema para tu actividad:

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

y en tu clase de actividad.

Funciona incluso cuando extiende ActionBarActivity.


6

En res -> valores -> styles.xml

Cambio

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

A

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


5

Heres una solución rápida.

Encuentra styles.xml y cambia el tema de la aplicación base a "Theme.AppCompat.NoActionBar" como se muestra a continuación.

<style name="AppTheme" parent="Theme.AppCompat.NoActionBar">
    <!-- Customize your theme here. -->
</style>

3

A continuación se detallan los pasos para ocultar la barra de acción de forma permanente:

  1. Abra la aplicación / res / values ​​/ styles.xml.
  2. Busque el elemento de estilo que se llama "apptheme". Debería ser similar a<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> .
  3. Ahora reemplace el padre con cualquier otro tema que contenga "NoActionBar" en su nombre.

    a. También puede verificar cómo se ve un tema cambiando a la pestaña de diseño de activity_main.xml y luego probando cada tema proporcionado en la lista desplegable de temas de la IU.

  4. Si su MainActivity extiende AppCompatActivity , asegúrese de usar un tema AppCompat.


3

Escriba este código a su onCreatemétodo antes setContentView:

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

3

Me gustaría publicar un enfoque de diseñador para esto, esto mantendrá el diseño separado de la lógica de su negocio:

Paso 1. Cree un nuevo estilo en (res-> values-> styles.xml): Básicamente es una copia de su esquema general con un elemento primario diferente: parent = "Theme.AppCompat.Light.NoActionBar"

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

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

Paso 2: en su AndroidManifest.xml, agregue este tema a la actividad que desea: por ejemplo, quiero mi actividad principal sin la barra de acción, así que agregue esto como a continuación:

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

Esta es la mejor solución para mí después de probar muchas cosas.


2

en la función onCreate agregue el siguiente código

ActionBar actionBar = getSupportActionBar();
actionBar.hide();

y solo importa android.support.v7.app.ActionBar


2

Asegúrese de crear un nuevo tema cambiando el nombre del tema predeterminado en el styles.xmlarchivo a:

 <style name="MyTheme" parent="android:Theme.Material.Light.NoActionBar">

y luego cambiar el tema del menú desplegable debajo de tu main_activity.xmla lo que llames tu tema.


1

Otra solución interesante donde desea conservar el ViewPager mientras elimina la barra de acción es tener un estilo como se muestra

<style name="AppTheme" parent="AppBaseTheme">
    <item name="android:windowActionBarOverlay">true</item>
    <item name="android:actionBarStyle">@style/NoActionBarStyle</item>
    <item name="android:windowContentOverlay">@null</item>
</style>
<style name="NoActionBarStyle" parent="android:Widget.Holo.ActionBar">
    <item name="android:backgroundSplit">@null</item>
    <item name="android:displayOptions"></item>
</style>

Esta es la forma en que la mayoría de las aplicaciones de Marcador en Android muestran ViewPager sin la barra de acción.

Ref: https://github.com/CyanogenMod/android_packages_apps_Dialer


Esta solución deja un área blanca en la parte superior.
Felipe FMMobile

Esto funcionó para mí en Android 2.3 con Theme.AppCompat.Light si cambié el padre NoActionBarStyle a @ style / Widget.AppCompat.ActionBar.TabBar (estoy usando un ViewPager)
TouchBoarder

1

prueba esto en tu distribuidor

 <activity
        android:name=".MainActivity"
        android:theme="@android:style/Theme.Holo.NoActionBar"
        android:label="@string/app_name" >

1
  protected void onCreate(Bundle savedInstanceState) {
   super.onCreate(savedInstanceState);
   android.support.v7.app.ActionBar actionBar = getSupportActionBar();
    if (actionBar != null) {
        actionBar.hide();
    }
    setContentView(R.layout.activity_main);

1

Hay dos formas de deshabilitar ActionBaren Android.

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

1

Use esto en el styles.xmlarchivo:


<style name="MyTheme" parent="@style/Theme.AppCompat.Light.NoActionBar">
        <item name="android:windowActionBar">false</item>
        <item name="android:windowNoTitle">true</item>

0

Yo uso esta solución:

en el manifiesto, dentro de su etiqueta de actividad:

android:label="@string/empty_string"

y en strings.xml:

<string name="empty_string">""</string>

De esta forma, mantienes ActionBar (o barra de herramientas) con el título, pero cuando Activity si se crea, el título se vacía automáticamente.


0

Por extraño que parezca, ninguno de estos funcionó para mí al construir en un Nexus 7 con 4.4.2 (API 19). En su mayor parte, al menos con la última versión de Android Studio (1.2.1.1) después de crear una aplicación de actividad en blanco, la:

android: theme = "@ style / AppTheme"

está en el elemento de aplicación, no en el elemento de actividad. Si eliminé el código anterior o intenté cambiarlo a:

android: theme = "@ android: style / Theme.Holo.Light.NoActionBar"

la aplicación no se ejecutará ... si esto le sucede a usted, simplemente vaya a su archivo styles.xml (res> values> styles.xml) y agregue .NoTitleBar al final del padre como este bloque:

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

No se necesitan cambios en el archivo AndroidManifest.


0

En su activity_main.xml, puede ajustar desde allí en la línea:

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
.......
    android:theme="@style/Theme.Design.Light.NoActionBar"
.......    
">

A veces, cuando puede ver cosas como esta, haga clic aquí . Puede seleccionar desde aquí el tema "noActionBar".

Espero que te haya ayudado.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.