La configuración android:windowActionBar="false"
realmente deshabilita la barra de acciones pero luego, como usted dice, getActionBar();
devuelve nulo. Esto se resuelve mediante:
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 la ActionBar e inmediatamente la oculta antes de que tenga la oportunidad de mostrarse.
Pero ahora hay otro problema. Después de poner windowActionBar="false"
el tema, la Actividad dibuja su Título de ventana normal en lugar de una Barra de acciones.
Si tratamos de evitar esto usando algunos de los *.NoTitleBar
temas comunes o si tratamos de poner <item name="android:windowNoTitle">true</item>
nuestro propio tema, no funcionará.
La razón es que ActionBar depende del título de la ventana para mostrarse, es decir, ActionBar 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:
<item name="android:windowActionBar">false</item>
<item name="android:windowTitleSize">0dp</item>
Esto hará que el título de la ventana tenga altura cero, por lo tanto prácticamente invisible.
En su caso, una vez que haya terminado de mostrar la pantalla de inicio, simplemente puede llamar
setContentView(R.layout.main);
getActionBar().show();
y listo 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 haya notado que la primera muestra no está animada. A partir de entonces, mostrar y esconderse son animados. Si quieres tener animación en la primera presentación también puedes 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 lógica adicional para verificar si esta es la primera muestra de la Actividad.
La idea es retrasar un poco la ocultación de ActionBar. En cierto modo, dejamos que se muestre la Barra de acciones, pero luego la ocultamos de inmediato. Por lo tanto, vamos más allá de la primera presentación no animada y la siguiente muestra se considerará segunda, por lo tanto, será animada.
Como habrás adivinado, existe la posibilidad de que la ActionBar pueda verse antes de que la operación retrasada la haya ocultado. Este es realmente el caso. La mayoría de las veces no se ve nada pero, de vez en cuando, puedes 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 para el usuario v7 support actionbar, el código será:
getWindow().requestFeature(Window.FEATURE_ACTION_BAR);
getSupportActionBar().hide();
Theme.AppCompat.Light
... use esto Cómo responder [1] [1]: stackoverflow.com/a/25365193/1364896