Android: cómo ocultar ActionBar en ciertas actividades

93

He desarrollado una aplicación de demostración sencilla con una pantalla de presentación, un mapa y algunas pantallas normales.

Tengo una barra de acción en la parte superior que contiene un logotipo. Todo se ve bien en mi teléfono (Galaxy s1 I9000 V2.3) pero cuando lo pruebo en Galaxy s2 v4, la barra de acción también aparece en la pantalla de inicio y en la pantalla del mapa.

La actividad de spalsh y map ni siquiera se heredan de ActionBarActivity, entonces, ¿cómo es posible y cómo puedo hacer que desaparezca?

Manifiesto:

<application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:theme="@style/Theme.AppCompat.Light" >
        <activity
            android:name=".HomeActivity"
            android:icon="@drawable/android_logo"
            android:label=""
            android:logo="@drawable/android_logo" >

            <!--
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
            -->
        </activity>
        <activity
            android:name=".MapActivity"
            android:label="" >
        </activity>
        <activity
            android:name=".PackageActivity"
            android:icon="@drawable/android_logo"
            android:label=""
            android:logo="@drawable/android_logo" >
        </activity>
        <activity
            android:name=".SplashActivity"
            android:label="" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

    </application>

Definición de MapActivity (es larga, así que incluí solo la definición):

public class MapActivity extends FragmentActivity implements LocationListener

Actividad de bienvenida:

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.support.v7.app.ActionBar;
import android.support.v7.app.ActionBarActivity;

public class SplashActivity extends Activity{

    private static final long SPLASH_DISPLAY_LENGTH = 2000;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_splash);

        new Handler().postDelayed(new Runnable(){
            @Override
            public void run() {
                Intent mainIntent = new Intent(SplashActivity.this,HomeActivity.class);
                SplashActivity.this.startActivity(mainIntent);
                SplashActivity.this.finish();
            }
        }, SPLASH_DISPLAY_LENGTH);

    }

}
Tomer
fuente

Respuestas:

129

Aplique lo siguiente en su tema para la actividad en AndroidManifest.xml:

<activity android:name=".Activity"
    android:label="@string/app_name"
    android:theme="@android:style/Theme.NoTitleBar">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>

Eso debería hacer el truco.

Si8
fuente
1
No puedo usar getActionBarporque la actividad no se hereda deActionBarActivity
Tomer
si lo uso, <item name="android:windowActionBar">false</item>¿no lo escondería en todas las pantallas?
Tomer
Actualice mi respuesta, que debería ser más adecuada para sus necesidades.
Si8
131

Mientras pregunta cómo esconderse en una determinada actividad , esto es lo que necesita:

getSupportActionBar().hide(); 
erluxman
fuente
32

1. Vaya a su manifest.xmlarchivo.

2. Findel activity tagpara el que desea ocultar su ActionBar y luego add,

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

           <activity
            android:name=".MainActivity"
            android:theme="@style/Theme.AppCompat.NoActionBar"
            >
Prateek Joshi
fuente
21

Si desea obtener la pantalla completa sin actionBar y Title.

Agréguelo 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 use el estilo en la actividad de manifest.xml.

<activity ....
      android:theme="@style/AppTheme.NoActionBar" > ......
</activity> 
reza.cse08
fuente
15

El ActionBargeneralmente existe a Fragmentslo largo de lo Activityque puede ocultarlo.

getActionBar().hide();
getActionBar().show();

y desde el Fragmentpuedes hacerlo

getActivity().getActionBar().hide();
getActivity().getActionBar().show();
sandalias
fuente
6
Yo uso: getSupportActionBar().hide(); en ActionBarActivity
Ihab Shoully
8

Si estuviera utilizando Theme.AppCompat.Light, un mejor equivalente sería Theme.AppCompat.Light.NoActionBar.

Descubrí que el uso de Theme.AppCompat.NoTitleBar hacía que el texto de mi botón fuera invisible, así que estoy usando Theme.AppCompat.Light.NoActionBar.

<activity android:name=".Activity"
    android:label="@string/app_name"
    android:theme="@android:style/Theme.AppCompat.Light.NoActionBar">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>
Joshgoldeneagle
fuente
7

¡Esto funciona para mí! Pon esto en tu actividad en manifiestos

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

También puede crear su tema personalizado en styles.xml como este:

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

Espero que esto ayude.

Kyo Huu
fuente
5

Puede utilizar el modo de perfil bajo Consulte aquí

Simplemente busque SYSTEM_UI_FLAG_LOW_PROFILEque también atenúe los botones de navegación si están presentes en la pantalla.

TMH
fuente
+1 por presentarme esto :), primero verificaré la solución @ SiKni8, ya que prefiero una solución sin codificación
Tomer
1
No hay problema, lo encontré realmente útil para mostrar un mapa de pantalla completa en mi aplicación, funciona muy bien para mí.
TMH
4

Las respuestas anteriores ayudarían con ActionBar. Para agregarlo, use el siguiente código en caso de que esté usando la pantalla de bienvenida: Use esto antes de configurar la vista de contenido:

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

Solo para aclarar, así es como se hace:

    super.onCreate(savedInstanceState);
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);         
    setContentView(R.layout.activity_main);

Esto convertiría su pantalla en una pantalla completa, es decir, eliminaría la barra superior donde ve la barra de red, etc.

BlueLeaf
fuente
4

Aplique lo siguiente en su tema para la actividad en AndroidManifest.xml:

<activity android:name=".DashboardActivity"
        android:theme="@style/AppFullScreenTheme">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

Luego aplique lo siguiente en su estilo en style.xml

<style name="AppFullScreenTheme" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="android:windowNoTitle">true</item>
    <item name="android:windowActionBar">false</item>
    <item name="android:windowFullscreen">true</item>
    <item name="android:windowContentOverlay">@null</item>
</style>
Kanaiyalal Badal
fuente
2

// Ocultar la barra de acción en la parte superior

// Agrega este código en el archivo java

    ActionBar actionBar=getSupportActionBar();
    actionBar.hide();
Ajay Patel
fuente
1

Esto funciona en API 27

En styles.xml reemplace el código por lo siguiente ....

<resources>
    <!-- No Action Bar -->
    <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
        <!-- Customize your theme here. -->
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
    </style>
</resources>

Luego, en los archivos (por ejemplo, activity_list.xml) en los que desea tener una barra de herramientas, coloque el siguiente código.

<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:background="@color/colorPrimary"/>

Si tiene problemas, cambie al diseño lineal (porque para eso se prueba este código)

Fuego de Dragon
fuente
1

Desde aqui :

A partir de Android 3.0 (nivel de API 11), todas las actividades que utilizan el tema predeterminado tienen una barra de acciones como barra de aplicaciones. Sin embargo, las funciones de la barra de aplicaciones se han agregado gradualmente a la barra de acciones nativa en varias versiones de Android. Como resultado, la ActionBar nativa se comporta de manera diferente según la versión del sistema Android que esté usando un dispositivo . Por el contrario, las funciones más recientes se agregan a la versión de la barra de herramientas de la biblioteca de soporte , y están disponibles en cualquier dispositivo que pueda usar la biblioteca de soporte.

Entonces, una opción es deshabilitar ActionBar por completo (en el archivo manifest.xml de la aplicación) y luego agregar la barra de herramientas en cada página que necesite una ActionBar.

(siga el enlace anterior para obtener una explicación paso a paso)

LoMaPh
fuente
0

Reemplazar AndroidManifest.xml

android:theme="@style/FullscreenTheme"

a

android:theme="@style/Theme.Design.NoActionBar"
Tarik Billa
fuente
0

Agregue un nuevo estilo en su style.xml

<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">

    <!-- Customize your theme here. -->
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
</style>

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

y luego agregue la siguiente línea en su manifiesto

<activity android:name=".Login"
        android:label="@string/app_name"
        android:theme="@style/LoginTheme"
        >
Suraj Gupta
fuente
0

Compruebe el atributo de relleno si el problema persiste después de cambiar el tema.

Problema de relleno al crear un espacio en blanco encima de la ventana del fragmento / ventana de la aplicación

Problema de relleno al crear un espacio en blanco encima de la ventana del fragmento / ventana de la aplicación

Una vez que elimina el relleno, el valor superior se elimina automáticamente el espacio en blanco.

Aravindhan Kumar
fuente