Comment désactiver définitivement la barre d'action


138

Je peux masquer la barre d'action en nid d'abeille en utilisant ce code:

getActionBar().hide();

Mais lorsque le clavier s'ouvre et que l'utilisateur copie-colle quoi que ce soit, la barre d'action s'affiche à nouveau. Comment puis-je désactiver la barre d'action de manière permanente?


2
J'ai trouvé la réponse hhh <activity android: theme = "@ android: style / Theme.NoTitleBar.Fullscreen" ....>
Biji

1
que pas une barre d'action lorsque vous essayez de copier, collez sa vue par défaut.
Padma Kumar

oui, mais après la fin du copier-coller, il n'y a toujours pas disparu
Biji

getSupportActionBar (). hide ();
Ameya Salagre

Réponses:


252

Si vous utilisez Theme.Holo.Lightet souhaitez utiliser la Theme.Holo.Light.NoActionBarvariante sur des appareils antérieurs à 3.2, vous pouvez l'ajouter à votre styles.xml:

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

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

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

8
C'est la bonne réponse. Ne supprime pas les thèmes personnalisés comme la solution de @ Biji.
phreakhead

1
Une idée de ce que l'indicateur supplémentaire serait de définir masquer la barre de notifications?
jesses.co.tt

1
J'ai également trouvé nécessaire d'hériter de FragmentActivity au lieu d'ActionBarActivity.
Meanman

4
@ jesses.co.tt La barre de notification peut être supprimée en utilisant<item name="android:windowFullscreen">true</item>
Mike Baxter

Cela n'a pas fonctionné pour moi. Utilisé ce qui suit: stackoverflow.com/questions/29790070/…
Christopher Smit

116

En définissant le thème de l'activité dans Manifest,

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

cela semble être la seule façon appropriée de le faire. esp. si vous avez une disposition relative en bas ...
jcfrei

1
C'est la seule façon dont je peux me rendre au travail, malheureusement. Cela supprime les thèmes personnalisés, mais c'est vraiment la seule chose qui supprime complètement le ActionBar, pour moi.
RileyE

3
Cela ne fonctionne pas avec l'application du thème AppCompat dans le nouvel ADT. Je ne pense pas que lutter contre cela - essayer de se débarrasser complètement d'AppCompat est une bonne solution non plus! J'ai essayé l'approche de @ monchote et cela fonctionne pour moi
ericn

cela devrait être <activity android: theme = "@ android: style / Theme.NoTitleBar"> au lieu de <activity android: theme = "@ android: style / Theme.NoTitleBar.Fullscreen">
Amandeep Rohila

Sur Samsung Galaxy J2, l'application plante, mais aucun problème sur Nexus 9
Suici Doga


30
<application
    .
    .
    android:theme="@android:style/Theme.Holo.Light.NoActionBar"
    . >

peut-être que cela vous aide


3
Notez que cette méthode nécessite un minimum de niveau api 13
Olumide

23

Avec la superclasse d'activité générée par défaut d'Android Studio ActionBarActivity, aucune solution ne fonctionne dans les autres réponses. Pour résoudre il suffit de changer de superclasse:

public class xxxActivity extends ActionBarActivity{

à:

public class xxxActivity extends Activity {

Cela l'a fait pour moi. Merci de votre aide.
j_fulch

17

Si vous voulez obtenir le plein écran sans actionBar et Title.

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 manifest.xml.

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

12

Le meilleur moyen que j'ai trouvé, qui donne des thèmes personnalisés et aucune barre d'action, est de créer une SuperClass pour toutes les activités de mon projet et dans son onCreate (), appelez la ligne de code suivante -

this.requestWindowFeature(Window.FEATURE_NO_TITLE);

Cela fonctionne toujours pour moi. Le seul problème dans cette approche est que vous verrez une barre d'action pendant une fraction de seconde lors du démarrage de l'application (pas l'activité, l'application complète).


12
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_my);
    getSupportActionBar().hide();
}

12

Accédez à styles.xml Remplacez cette DarkActionBar par NoActionBar

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

7

Vous pouvez forcer le masquage de la barre d'action simplement:

ActionBar  actionbar = getSupportActionBar();
actionBar.hide();

Utilisez simplement votre thème par défaut.


7

Si vous voulez juste un thème sans barre d'action, vous pouvez utiliser la variante 'NoActionBar', par exemple. si votre thème de base est comme ci-dessous

<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
</style>

alors vous pouvez utiliser

<style name="AppThemeNoActionBar" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
</style>

Mais si vous souhaitez conserver les propriétés de votre thème principal, c'est-à-dire AppTheme, vous pouvez faire comme ci-dessous

<style name="AppThemeNoActionBar" parent="AppTheme">
    <item name="windowActionBar">false</item>
    <item name="windowNoTitle">true</item>
</style>

Vous pouvez conserver toutes les propriétés de votre thème de base de cette façon et ne pas avoir à les ajouter explicitement dans votre thème NoActionBar :)


6

N'utilisez pas le thème Holo et la barre d'action disparaîtra. Ce code fonctionne pour moi sur l'API 8+, avec le support lib v7:

<style name="NoActionBar" parent="@style/Theme.AppCompat.Light">
<item name="android:windowNoTitle">true</item>
</style>

définissez ce thème pour votre activité:

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

et dans votre classe d'activités.

Cela fonctionne même lorsqu'il étend ActionBarActivity.


6

Sous res -> valeurs -> styles.xml

Changement

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

À

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


5

Voici une solution rapide.

Vous trouvez styles.xml et vous changez le thème d'application de base en "Theme.AppCompat.NoActionBar" comme indiqué ci-dessous.

<style name="AppTheme" parent="Theme.AppCompat.NoActionBar">
    <!-- Customize your theme here. -->
</style>

3

Voici les étapes pour masquer la barre d'action de manière permanente:

  1. Ouvrez app / res / values ​​/ styles.xml.
  2. Recherchez l'élément de style nommé "apptheme". Devrait ressembler à <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">.
  3. Maintenant, remplacez le parent par tout autre thème qui contient "NoActionBar" dans son nom.

    une. Vous pouvez également vérifier à quoi ressemble un thème en passant à l'onglet de conception de activity_main.xml, puis en essayant chaque thème fourni dans la liste déroulante des thèmes de l'interface utilisateur.

  4. Si votre MainActivity étend AppCompatActivity , assurez-vous d'utiliser un thème AppCompat.


3

Tapez ce code dans votre onCreateméthode avant setContentView:

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

3

Je voudrais plutôt publier une approche Designer à ce sujet, cela gardera le design séparé de votre logique métier:

Étape 1. Créez un nouveau style dans (res-> values-> styles.xml): Fondamentalement, il s'agit d'une copie de votre schéma global avec un parent différent - parent = "Theme.AppCompat.Light.NoActionBar"

<!-- custom application theme. -->
    <style name="MarkitTheme" parent="Theme.AppCompat.Light.NoActionBar">
        <!-- Customize your theme here. -->
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimary</item>
        <item name="colorAccent">@color/colorAccent</item>

        <item name="android:windowNoTitle">true</item>
    </style>

Étape 2: Dans votre AndroidManifest.xml, ajoutez ce thème à l'activité dans laquelle vous voulez: par exemple, je veux mon activité principale sans barre d'action, alors ajoutez ceci comme ci-dessous:

<activity android:name=".MainActivity"
            android:theme="@style/MarkitTheme">

C'est la meilleure solution pour moi après avoir essayé beaucoup de choses.


2

dans la fonction onCreate, ajoutez le code suivant

ActionBar actionBar = getSupportActionBar();
actionBar.hide();

et importez simplement android.support.v7.app.ActionBar


2

Assurez-vous de créer un nouveau thème en modifiant le nom du thème par défaut dans le styles.xmlfichier en:

 <style name="MyTheme" parent="android:Theme.Material.Light.NoActionBar">

et que changez le thème de la liste déroulante sous votre main_activity.xmlà celui que vous avez appelé votre thème.


1

Une autre solution intéressante où vous souhaitez conserver le ViewPager tout en supprimant la barre d'action est d'avoir un style comme spectacle

<style name="AppTheme" parent="AppBaseTheme">
    <item name="android:windowActionBarOverlay">true</item>
    <item name="android:actionBarStyle">@style/NoActionBarStyle</item>
    <item name="android:windowContentOverlay">@null</item>
</style>
<style name="NoActionBarStyle" parent="android:Widget.Holo.ActionBar">
    <item name="android:backgroundSplit">@null</item>
    <item name="android:displayOptions"></item>
</style>

C'est ainsi que la plupart des applications Dialer sur Android affichent le ViewPager sans la barre d'action.

Réf: https://github.com/CyanogenMod/android_packages_apps_Dialer


cette solution laisse une zone blanche en haut.
Felipe FMMobile

Cela a fonctionné pour moi sur Android 2.3 avec le Theme.AppCompat.Light si j'ai changé le parent NoActionBarStyle en @ style / Widget.AppCompat.ActionBar.TabBar (j'utilise un ViewPager)
TouchBoarder

1

essayez ceci dans votre manifist

 <activity
        android:name=".MainActivity"
        android:theme="@android:style/Theme.Holo.NoActionBar"
        android:label="@string/app_name" >

1
  protected void onCreate(Bundle savedInstanceState) {
   super.onCreate(savedInstanceState);
   android.support.v7.app.ActionBar actionBar = getSupportActionBar();
    if (actionBar != null) {
        actionBar.hide();
    }
    setContentView(R.layout.activity_main);

1

Il existe deux façons de désactiver ActionBardans Android.

requestWindowFeature(Window.FEATURE_NO_TITLE); 
setContentView(R.layout.activity_main); 

1

Utilisez ceci dans le styles.xmlfichier:


<style name="MyTheme" parent="@style/Theme.AppCompat.Light.NoActionBar">
        <item name="android:windowActionBar">false</item>
        <item name="android:windowNoTitle">true</item>

0

J'utilise cette solution:

dans le manifeste, à l'intérieur de votre balise d'activité:

android:label="@string/empty_string"

et dans strings.xml:

<string name="empty_string">""</string>

De cette façon, vous gardez ActionBar (ou Toolbar) avec le titre, mais lorsque l'activité est créée, le titre est automatiquement vide.


0

Curieusement, rien de tout cela n'a fonctionné pour moi lors de la construction d'un Nexus 7 exécutant 4.4.2 (API 19). Pour la plupart, au moins avec la dernière version d'Android Studio (1.2.1.1) après avoir créé une application d'activité vide, le:

android: theme = "@ style / AppTheme"

est dans l'élément d'application, pas dans l'élément d'activité. Si j'ai supprimé le code ci-dessus ou essayé de le changer en:

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

l'application ne fonctionnera pas ... si cela vous arrive, allez simplement dans votre fichier styles.xml (res> values> styles.xml) et ajoutez le .NoTitleBar à la fin du parent comme ce bloc:

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

Aucune modification du fichier AndroidManifest n'est nécessaire.


0

Dans votre activity_main.xml, vous pouvez ajuster à partir de là dans la ligne:

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
.......
    android:theme="@style/Theme.Design.Light.NoActionBar"
.......    
">

Parfois, lorsque vous pouvez voir des choses comme celle-ci Cliquez ici , vous pouvez sélectionner ici le thème "noActionBar".

J'espère que je t'ai aidé.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.