129 votes

Android: comment masquer ActionBar sur certaines activités

J'ai développé une application de démonstration simple avec un écran de démarrage, une carte et quelques écrans réguliers.

J'ai une barre d'action en haut qui contient un logo. Tout semble bien sur mon téléphone (Galaxy S1 I9000 V2.3) mais quand je le teste sur Galaxy S2 V4, la barre d'action apparaît également dans l'écran de démarrage et dans l'écran de la carte.

Les activités de démarrage et de carte n'héritent même pas de ActionBarActivity, alors comment est-ce possible et comment puis-je le faire disparaître ?

Manifeste:

Définition de MapActivity (c'est une longue donc j'ai inclus juste la définition):

public class MapActivity extends FragmentActivity implements LocationListener

Activité de l'écran de démarrage:

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);

    }

}

4voto

@Override
public void onResume() {
    super.onResume();
    getSupportActionBar().hide();
}

@Override
public void onStop() {
    super.onStop();
    getSupportActionBar().show();
}

4voto

BlueLeaf Points 184

Les réponses ci-dessus aideraient avec le truc de l'ActionBar. Pour ajouter à cela, utilisez le code suivant si vous utilisez l'écran de démarrage : Utilisez ceci avant de définir la vue du contenu:

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

Juste pour clarifier, voici comment vous le faites :

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

Cela ferait de votre écran un écran complet, c'est-à-dire enlever la barre supérieure où vous voyez la barre de réseau, etc.

3voto

an0nym0use Points 44

Pour masquer sélectivement l'actionbar dans les activités :

Ajoutez le code suivant à onCreate (de préférence à la dernière ligne de la fonction)

Kotlin:

supportActionBar?.hide()

Java:

getSupportActionBar().hide();

1voto

LoMaPh Points 287

À partir ici:

À partir d'Android 3.0 (niveau API 11), toutes les activités qui utilisent le thème par défaut ont une ActionBar en tant que barre d'application. Cependant, les fonctionnalités de la barre d'application ont été progressivement ajoutées à la ActionBar native au fil des versions d'Android. En conséquence, la ActionBar native se comporte différemment en fonction de la version du système Android utilisée par un appareil. En revanche, les fonctionnalités les plus récentes sont ajoutées à la version de Toolbar de la bibliothèque de support, et elles sont disponibles sur n'importe quel appareil pouvant utiliser la bibliothèque de support.

Une option est donc de désactiver complètement la ActionBar (dans le fichier manifeste de l'application) puis d'ajouter la Toolbar sur chaque page qui a besoin d'une ActionBar.

(suivez le lien ci-dessus pour une explication étape par étape)

1voto

Suraj Gupta Points 11

Ajoutez le nouveau style dans votre style.xml

    <!-- Personnalisez votre thème ici. -->
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>

    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>

et puis ajoutez la ligne suivante dans votre manifeste

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X