¿Cómo ocultar la barra de acciones antes de crear la actividad y luego volver a mostrarla?

Necesito implementar la pantalla de presentación en mi aplicación Honeycomb. Uso este código en la actividad onCreate para mostrar splash:

setContentView(R.layout.splash); getActionBar().hide(); 

y este código para mostrar la interfaz de usuario principal después de algún tiempo:

 setContentView(R.layout.main); getActionBar().show(); 

Pero antes de que se llame a onCreate y aparezca el mensaje de bienvenida, hay una pequeña cantidad de tiempo cuando se muestra la barra de acciones.

¿Cómo puedo hacer que la barra de acciones sea invisible?

Traté de aplicar el tema a la actividad sin barra de acciones:

 false 

pero en ese caso getActionBar () siempre devuelve nulo y no encontré manera de volver a mostrarlo.

Setting android:windowActionBar="false" realmente desactiva la barra de acciones pero luego, como dices, getActionBar(); devuelve nulo. Esto es resuelto por:

 public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); getWindow().requestFeature(Window.FEATURE_ACTION_BAR); getActionBar().hide(); setContentView(R.layout.splash); // be sure you call this AFTER requestFeature 

Esto crea el ActionBar y lo oculta inmediatamente antes de que se pueda mostrar.

Pero ahora hay otro problema. Después de poner windowActionBar="false" en el tema, la actividad dibuja su título de ventana normal en lugar de una barra de acciones.
Si intentamos evitar esto utilizando algunos de los temas de stock *.NoTitleBar o intentamos poner true en nuestro propio tema, no funcionará.
La razón es que ActionBar depende del título de la ventana para mostrarse, es decir, la barra de acciones es un título de ventana transformado.
Entonces, el truco que puede ayudarnos es agregar una cosa más a nuestro tema de actividad xml:

 false 0dp 

Esto hará que el título de la ventana con altura cero, por lo tanto, prácticamente invisible.

En su caso, después de que haya terminado de mostrar la pantalla de bienvenida, simplemente puede llamar

 setContentView(R.layout.main); getActionBar().show(); 

y has terminado. La actividad comenzará sin parpadeo de ActionBar, ni se mostrará el título de la ventana.

ADDON: si muestra y oculta la barra de acciones varias veces, tal vez se haya dado cuenta de que la primera muestra no está animada. A partir de ese momento, se muestra animado y se muestra. Si desea que la animación se muestre también en la primera, puede usar esto:

 protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_ACTION_BAR); // delaying the hiding of the ActionBar Handler h = new Handler(); h.post(new Runnable() { @Override public void run() { getActionBar().hide(); } }); 

Lo mismo se puede lograr con:

 protected void onPostResume() { super.onPostResume(); getActionBar().hide(); 

pero puede necesitar alguna lógica adicional para verificar si esta es la primera muestra de la Actividad.

La idea es retrasar un poco la ocultación de la barra de acciones. De alguna manera, dejamos que se muestre ActionBar, pero luego lo ocultamos inmediatamente. Por lo tanto, vamos más allá de la primera presentación no animada y la próxima presentación se considerará en segundo lugar, por lo que será animada.

Como puede haber adivinado, existe la posibilidad de que se pueda ver el ActionBar antes de que se haya ocultado por la operación demorada. Este es realmente el caso. La mayoría de las veces no se ve nada pero, de vez en cuando, se puede ver el parpadeo de ActionBar por una fracción de segundo.

En cualquier caso, esta no es una solución bonita, por lo que agradezco cualquier sugerencia.

Además del usuario de la barra de acciones de soporte v7, el código será:

 getWindow().requestFeature(Window.FEATURE_ACTION_BAR); getSupportActionBar().hide(); 

Usando este código simple en su archivo .class para ocultar la barra de acciones

 getSupportActionBar().hide(); 

Si está utilizando ActionBarSherlock, entonces use Theme.Sherlock.NoActionBar Theme en su Activity

       

Crea dos estilos:

   

Establezca AppThemeNoBar como tema de aplicación y AppThemeBar para la actividad en la que desea mostrar ActionBar. Al utilizar dos estilos, no verá la barra de acciones mientras se cargan las vistas.

Mira este enlace Android: oculta la barra de acciones mientras ves la carga

Hola, tengo una solución simple al usar 2 temas

  1. Tema de la pantalla de bienvenida (agréguelo al manifiesto):

  2. tema normal (agréguelo en su actividad por setTheme (R.style.Theme)):

Para admitir SDK 10:

 @Override public void onCreate(Bundle savedInstanceState) { setTheme(R.style.Theme); super.onCreate(savedInstanceState); ........... ........... } 

También estaba tratando de ocultar Action Bar en Android 2.2, pero ninguna de estas soluciones funcionó. Todo termina con un choque. Comprobé el mensaje DDMS LOg, me decía que usara ‘Theme.AppCompat’. Al final, resolví el problema cambiando la línea android:theme="@android:style/Theme.Holo.Light.NoActionBar"

en android:theme="@style/Theme.AppCompat.NoActionBar" y funcionó, pero la interfaz estaba oscura.

luego probé con android:theme="@style/Theme.AppCompat.Light.NoActionBar" y finalmente obtuve lo que quería.

Después de eso, cuando busqué ‘AppCompat’ en el sitio para desarrolladores, obtuve This.

Así que creo que la Solución para Android 2.2 es

       

Y lo siento por mi mal inglés como siempre.

El mejor resultado para mí fue crear una actividad con ThemeNoTitleBar y sin contenido como iniciador. Entonces esta actividad llama directamente a la otra.

Por supuesto, si lo desea, puede agregar contenido a la Actividad de Splash, pero en mi caso solo quería mostrar la aplicación directamente.

Manifiesto:

       

Actividad:

 public class SplashActivity extends Activity{ @Override protected void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); //start StartActivity Intent intent = new Intent(this, StartActivity.class); startActivity(intent); finish(); } 

}

Si usa una Activity incluida una pantalla de bienvenida, puede hacerlo si usa SherlockActionBar

 getSupportActionBar().hide(); 

Después de la pantalla de bienvenida, puede volver a mostrarla con …

 getSupportActionBar().show(); 

Debería ser lo mismo con ActionBar nativo de Android.

La solución @Clerics funciona. Pero esto también parece ser un problema con algunas de las aplicaciones nativas de Google: Google Play, Play Store, Talk. También otras aplicaciones grandes como Skype.

EDITAR : La solución de Bellow me ha dado un problema para actionbarsherlock en api <4.0, la razón es setTheme no funciona pre sandwich de helado

Agregue el siguiente en su manifiesto dentro de su aplicación o tags de actividad:

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

Y luego en tu actividad principal:

  // Set theme setTheme(R.style.YOUR_THEME); getSupportActionBar().setTitle(R.string.title); // Start regular onCreate() super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); 

mejor y simple

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

2015, utilizando la biblioteca de soporte v7 con el tema AppCompat, configure este tema para su Actividad.

  

Para Splashscreen debes usar esta línea en manifest y no usar getActionBar()

 false 

y una vez cuando la Activity Splash haya finalizado en la Activity principal, use debajo o nada

 true 

Prueba esto, funciona para mí:

A continuación, se deshace de la barra de título de la actividad

  requestWindowFeature(Window.FEATURE_NO_TITLE); 

A continuación se elimina la barra de notificaciones para que la actividad pase a pantalla completa

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

(Ejemplo completo a continuación) Tome nota: se llamaron a estos métodos antes de establecer la vista de contenido de nuestra actividad

 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // Sets Application to full screen by removing action bar requestWindowFeature(Window.FEATURE_NO_TITLE); getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); setContentView(R.layout.activity_main); // without this check, we would create a new fragment at each orientation change! if (null == savedInstanceState) createFragment(); } 

esto puede ser útil
agrega esto a tu manifiesto

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

aclamaciones

La mejor manera que encuentro después de leer todas las opciones disponibles es establecer el tema principal sin ActionBar y luego configurar MyTheme en el código en el padre de toda la actividad.

Manifiesto:

  

BaseActivity:

 public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setTheme(R.style.GreenHoloTheme); } 

¡De esta manera, me ayuda a evitar ActionBar cuando se inicia la aplicación!

Las soluciones ya publicadas vinieron con el efecto secundario de que la primera llamada a .show () no animaba la barra de acciones para mí. Obtuve otra buena solución, que solucionó eso:

Crea un dibujable transparente, algo así:

    

Establezca el fondo real de la barra de acciones en una vista personalizada invisible que configure en la barra de acciones:

 getSupportActionBar().setCustomView(R.layout.actionbar_custom_layout); getSupportActionBar().setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM, ActionBar.DISPLAY_SHOW_CUSTOM | ActionBar.DISPLAY_SHOW_HOME | ActionBar.DISPLAY_SHOW_TITLE); 

Establezca el fondo transparente para la barra de acciones en onCreate:

 getSupportActionBar().setBackgroundDrawable(getResources().getDrawable(R.drawable.background_transparent)); 

Imortant: No oculte la barra de acciones inmediatamente en onCreate, pero con un poco de retraso más tarde, por ejemplo, cuando el diseño finaliza con la creación:

 getWindow().getDecorView().getViewTreeObserver().addOnGlobalLayoutListener(new OnGlobalLayoutListener() { @Override public void onGlobalLayout() { getSupportActionBar().hide(); } }); 

Antes de su primera llamada a .show () establece la vista personalizada visible:

 _actionbarRoot.setVisibility(View.VISIBLE); getSupportActionBar().show(); 

En caso de que tenga nulo porque está usando la biblioteca de soporte , en lugar de getActionBar() necesita llamar a getSupportActionBar() .

Ponga su pantalla de presentación en una actividad separada y use startActivityForResult del startActivityForResult de su actividad principal para mostrarla. Esto funciona porque, de acuerdo con los documentos:

Como un caso especial, si llama a startActivityForResult () con un requestCode> = 0 durante la inicial onCreate (Bundle savedInstanceState) / onResume () de su actividad, entonces su ventana no se mostrará hasta que se devuelva un resultado desde la actividad iniciada . Esto es para evitar parpadeos visibles al redirigir a otra actividad.

Probablemente deberías hacer esto solo si el argumento de onCreate es null (lo que indica un nuevo lanzamiento de tu actividad, a diferencia de un reinicio debido a un cambio de configuración).

Todavía tenía un error con el puntero nulo y finalmente me ayudó cuando llamé primero a getWindow (). RequestFeature () y luego a super.onCreate ()

 public void onCreate(Bundle savedInstanceState) { getWindow().requestFeature(Window.FEATURE_ACTION_BAR); super.onCreate(savedInstanceState); getActionBar().show(); 

Solo agregue esto en su styles.xml

 true 

En realidad, simplemente podría establecer la Activity splash con NoActionBar y establecer su activity principal con la barra de acciones.

La mejor manera de hacerlo es hacer que la primera actividad sea una actividad en blanco y el contenido que desea colocar, y luego, después de un tiempo, iniciar otra actividad. Al seguir de esta manera, puede hacer la primera actividad como su pantalla de presentación sin barra de acción ni nada. Heres mi primera actividad

 package com.superoriginal.rootashadnasim.syllabus; import android.content.Intent; import android.os.Handler; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; public class first_screen extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_first_screen); final Handler h=new Handler(); h.postDelayed(new Runnable() { @Override public void run() { Intent intent=new Intent(getApplicationContext(),DrawerChooseBranchMainActivity.class); startActivity(intent); } },2000); } } 

Después de eso puedes poner cualquiera de tus actividades como primera actividad. Si no quieres ninguna barra de acción en ninguna pantalla, solo agrega esto en tus estilos.

  false true 

Me doy cuenta de que publicar enlaces no es la mejor manera de hacer las cosas, pero le recomiendo que lea la siguiente documentación de Google. Este es el documento oficial de Android sobre cómo controlar su sistema ui (cosas como barra de acciones, barra de navegación, etc.). Lamentablemente, la información es demasiado para publicarla directamente, pero después de leerla comprenderá exactamente cómo mostrar y ocultar las características sin importar la versión que esté desarrollando, ¡es muy simple!

En caso de que el enlace cambie alguna vez, se puede encontrar en la documentación oficial de Android en curso de capacitación -> inicio -> Mejores prácticas para la interfaz de usuario -> administración del sistema ui

https://developer.android.com/training/system-ui/index.html

enter image description here

puedes usar esto:

getSupportActionBar().hide(); si no funciona, pruebe este:

 getActionBar().hide(); 

si arriba no funciona, intente así:

en su directorio = res / values ​​/ style.xml, abra style.xml -> hay un atributo parent change para parent="Theme.AppCompat.Light.DarkActionBar"

si todo no funciona también ya no sé pero para mi funciona