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?

Biji
fuente
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" ... />
monchote
fuente
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"
....
>
Biji
fuente
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

semih
fuente
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 {
Piotr Müller
fuente
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" 
reza.cse08
fuente
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).

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

Vaya a styles.xml Cambie este DarkActionBar a NoActionBar

style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
Dr. Adams
fuente
7

Puede forzar ocultar la barra de acción simplemente:

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

Solo usa tu tema predeterminado.

Trixie Belarmino
fuente
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 :)

sant vetkoli
fuente
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.

Hoang Nguyen Huu
fuente
6

En res -> valores -> styles.xml

Cambio

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

A

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

Shubham Shekhar
fuente
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>
odlh
fuente
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.

Ravi Chandra
fuente
3

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

requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, 0);
codificador_pavel
fuente
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.

Varun Ved
fuente
2

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

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

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

Rahul
fuente
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.

Raif Deari
fuente
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

Avinash R
fuente
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" >
Mrad4Tech
fuente
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);
Abhijeet
fuente
1

Hay dos formas de deshabilitar ActionBaren Android.

requestWindowFeature(Window.FEATURE_NO_TITLE); 
setContentView(R.layout.activity_main); 
gaurav
fuente
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>
Mohsen Emami
fuente
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.

Lorenzo Barbagli
fuente
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.

whyoz
fuente
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.

John Melody Melissa
fuente