web-dev-qa-db-fra.com

Activité Android sans ActionBar

J'ai différents Activities dans mon application et dans chacun d'eux, je ne veux pas le Action Bar. Je ne trouve pas comment le désactiver. J'ai essayé de trouver un attribut pour l'appliquer au main_activity.xml mais jusqu'à présent, je n'ai rien trouvé. quelqu'un peut m'aider s'il vous plait?

50
Lutscha

Haha, je suis coincé à ce moment-là aussi, alors je suis heureux de pouvoir vous aider avec une solution, cela a au moins fonctionné pour moi :)

Ce que vous voulez faire, c'est définir un nouveau style dans values ​​/ styles.xml afin qu'il ressemble à ceci

<resources>
    <style name = "AppTheme" parent = "Android:Theme.Holo.Light.DarkActionBar">
        <!-- Customize your theme here. -->
    </style>

    <style name = "NoActionBar" parent = "@Android:style/Theme.Holo.Light">
        <item name = "Android:windowActionBar">false</item>
        <item name = "Android:windowNoTitle">true</item>
    </style>

</resources>

Seul le style NoActionBar est intéressant pour vous. Enfin, vous devez définir le thème de votre application dans le fichier AndroidManifest.xml afin qu'il ressemble à ceci

<application
    Android:allowBackup = "true"
    Android:icon = "@drawable/ic_launcher"
    Android:label = "@string/app_name"
    Android:theme = "@style/NoActionBar"   <!--This is the important line-->
    >
    <activity
    [...]

J'espère que cela aide, sinon, faites le moi savoir.

74
JRsz

Il y a plusieurs façons de le faire.

1) Changer le thème dans le manifeste Android

Sous l'élément Application, vous trouverez une balise de thème. Remplacez-le par celui-ci -

Android:theme="@Android:style/Theme.NoTitleBar"

Si vous utilisez AppCompat, utilisez @Android:style/Theme.AppCompat.NoActionBar.

Cela définira le thème de toutes les activités. Si vous n'avez pas besoin de la barre d'action dans une activité spécifique, définissez le thème dans le conteneur d'activités, c.-à-d.

<activity Android:theme="@Android:style/Theme.NoTitleBar" ...>

Vous pouvez également définir le thème Android:theme="@Android:style/Theme.NoTitleBar" dans les styles et l’utiliser ultérieurement.


2) Créer un thème personnalisé

Ajoutez ceci dans res/values/styles.xml

<style name="NoActionBar" parent="@Android:style/Theme.Holo.Light">
     <item name="windowActionBar">false</item>
     <item name="Android:windowNoTitle">true</item>
</style>

puis définissez-le comme thème de votre activité dans Manifest:

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

3) Supprimer dynamiquement la barre d'action

Placez ce code dans la méthode onCreate avant de définir l'affichage du contenu -

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

Si vous utilisez la bibliothèque de support, utilisez getSupportActionBar().

63
Confuse

Considérant que tout le monde publie d'anciennes manières de masquer le ActionBar, voici la manière appropriée de l'implémenter dans les styles de la bibliothèque de support AppCompat. Ce que je suggère fortement d'aller vers si vous ne l'avez pas déjà fait. 

Enlever simplement la barre d'action

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
</style>

Si vous utilisez les bibliothèques de support appcompat, il s'agit du moyen le plus simple et le plus recommandé de masquer l'ActionBar pour passer en plein écran ou pour commencer à implémenter la barre d'outils dans vos mises en page.

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
    <!-- Your Toolbar Color-->
    <item name="colorPrimary">@color/primary</item>

    <!-- colorPrimaryDark is used for the status bar -->
    <item name="colorPrimaryDark">@color/primary_dark</item>

    <!-- colorAccent is used as the default value for colorControlActivated,
     which is used to tint widgets -->
    <item name="colorAccent">@color/accent</item>

    <!-- You can also set colorControlNormal, colorControlActivated
     colorControlHighlight, and colorSwitchThumbNormal. -->
</style>

Puis pour changer la couleur de votre barre d’outils

<Android.support.v7.widget.Toolbar
    Android:id=”@+id/my_awesome_toolbar”
    Android:layout_height=”wrap_content”
    Android:layout_width=”match_parent”
    Android:minHeight=”?attr/actionBarSize”
    Android:background=”?attr/primary” />

Dernière remarque: votre classe d'activité doit étendre AppCompatActivity

public class MainActivity extends AppCompatActivity {

<!--Activity Items -->

}
8
Eugene H

Si vous utilisez AppCompat, déclarez votre activité dans AndroidManifest.xml comme suit:

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

Vous pouvez également modifier l'héritage d'ActionBarActivity en Activité tel qu'il est écrit ici .

METTRE À JOUR

Une bonne solution est ici :

@Override
protected void onCreate(Bundle savedInstanceState) {
    getWindow().requestFeature(Window.FEATURE_ACTION_BAR);
    super.onCreate(savedInstanceState);
    getSupportActionBar().hide();
    setContentView(R.layout.activity_main);
}
4
CoolMind

ouvrez Manifest et ajoutez l'attribut theme = "@ style/Theme.AppCompat.Light.NoActionBar" à l'activité de votre choix sans barre d'action:

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

Je vais essayer de le montrer aussi simple que possible:

DÉCLARER L'ACTIVITÉ À L'ÉCRAN COMPLET DANS LE MAINIFEST Android:

<activity
            Android:name=".GameActivity"
            Android:label="@string/title_activity_game"
            Android:theme="@Android:style/Theme.NoTitleBar.Fullscreen">

Maintenant, dans Android studio (si vous l’utilisez), ouvrez votre fichier XML d’activité (dans mon exemple activity_game.xml) dans le concepteur et sélectionnez le thème (au-dessus du téléphone mobile dans le bouton du concepteur avec un petit cercle), puis sélectionnez Thèmes Mainfest sur le côté gauche et puis NoTitleBar.Fullscreen.

J'espère que ça va aider! 

2
user4009281

Si vous souhaitez que la plupart de vos activités comportent une barre d'actions, vous héritez probablement de votre thème de base du thème par défaut (généré automatiquement par Android Studio par défaut):

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

Ajoutez ensuite un thème spécial pour votre activité sans barre:

<style name="AppTheme.NoTitle" parent="AppTheme">
        <item name="windowNoTitle">true</item>
        <item name="windowActionBar">false</item>
        <item name="actionBarTheme">@null</item>
    </style>

Pour moi, régler actionBarTheme sur @null était la solution.

Enfin, configurez l’activité dans votre fichier manifeste:

<activity ... Android:theme="@style/AppTheme.NoTitle" ... >
2
Claude

Le style par défaut que vous obtenez dans res/value/style.xml, comme

  <style name="AppTheme.NoActionBar">
        <item name="windowActionBar">false</item>
        <item name="windowNoTitle">true</item>
  </style>

Et juste le dessous comme dans votre balise d'activité,

Android:theme="@style/AppTheme.NoActionBar"
1
Prashant Mhetre

Veuillez trouver le thème par défaut dans styles.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>

Et changer le parent de cette façon 

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
0
D. Sergeev