web-dev-qa-db-fra.com

Android: comment cacher la barre d'action sur certaines activités

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

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

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

Manifeste:

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

Définition de MapActivity (c'est un long terme, donc je n'ai inclus que la définition):

public class MapActivity extends FragmentActivity implements LocationListener

Activité Splash:

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

    }

}
80
Tomer

Appliquez les éléments suivants dans votre thème pour l'activité dans 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>

Cela devrait faire l'affaire.

114
Si8

Lorsque vous demandez comment masquer dans une certaine activité, voici ce dont vous avez besoin:

getSupportActionBar().hide(); 
101
erluxman

1.Allez dans votre fichier manifest.xml.

2 .Find le activity tag pour lequel vous voulez masquer votre barre d’action, puis add,

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

           <activity
            Android:name=".MainActivity"
            Android:theme="@style/Theme.AppCompat.NoActionBar"
            >
28
Prateek Joshi

Si vous voulez passer en plein écran sans actionBar ni titre.

Ajoutez-le dans 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>

et utilisez le style à l’activité de manifest.xml.

<activity ....
      Android:theme="@style/AppTheme.NoActionBar" > ......
</activity> 
18
reza.cse08

La ActionBar existe généralement le long de Fragments donc vous pouvez la masquer à partir de la Activity

getActionbar().hide();
getActionbar().show();

et du Fragment vous pouvez le faire

getActivity().getActionbar().hide();
getActivity().getActionbar().show();
13
sandalone

Si vous utilisiez Theme.AppCompat.Light, un meilleur équivalent serait Theme.AppCompat.Light.NoActionBar.

J'ai constaté qu'en utilisant Theme.AppCompat.NoTitleBar, le texte de mon bouton était invisible, j'utilisais donc 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>
8
joshgoldeneagle

Cela fonctionne pour moi! Mettez ceci dans votre activité dans les manifestes

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

Vous pouvez également créer votre thème personnalisé dans styles.xml comme ceci:

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

J'espère que cette aide.

5
Kyo Huu

Vous pouvez utiliser le mode Profil bas Voir ici

Il suffit de rechercher SYSTEM_UI_FLAG_LOW_PROFILE qui assombrit également les boutons de navigation s’ils sont présents à l’écran.

5
TMH

Appliquez les éléments suivants dans votre thème pour l'activité dans 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>

Puis appliquez ce qui suit dans votre style dans 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>
4
Kanaiyalal Badal

Les réponses ci-dessus aideraient avec la chose ActionBar. Pour l'ajouter, utilisez le code suivant au cas où vous utiliseriez l'écran de démarrage: Utilisez ceci avant de définir l'affichage 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 plein écran, c’est-à-dire supprimer la barre du haut où vous voyez la barre de réseau, etc.

4
BlueLeaf

Cela fonctionne dans l'API 27

Dans le fichier styles.xml, remplacez le code par ce qui suit ....

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

Ensuite, dans les fichiers (par exemple, activity_list.xml) dans lesquels vous souhaitez qu'une barre d’outils place le code suivant.

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

Si vous avez des problèmes, passez en présentation linéaire (car c’est ce sur quoi ce code est testé)

1
DragonFire

De ici :

À partir de Android 3.0 (API de niveau 11), toutes les activités utilisant le thème par défaut ont un ActionBar en tant que barre d’application. Toutefois, des fonctionnalités de barre d’application ont été progressivement ajoutées au ActionBar natif au fil des différentes versions de Android. Par conséquent, le ActionBar natif se comporte différemment selon la version du système Android qu'un périphérique peut utiliser . En revanche, les fonctionnalités les plus récentes sont ajoutées à la version de Toolbar de la bibliothèque de support et sont disponibles sur tout périphérique pouvant utiliser cette bibliothèque.

Une option consiste donc à désactiver complètement ActionBar (dans le fichier app manifest.xml), puis à ajouter la barre d’outils dans chaque page nécessitant un ActionBar.

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

1
LoMaPh

Remplacer AndroidManifest.xml

Android:theme="@style/FullscreenTheme"

à

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