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?

Biji
la source
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" ... />
monchote
la source
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"
....
>
Biji
la source
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

semih
la source
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 {
Piotr Müller
la source
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" 
reza.cse08
la source
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).

Noob
la source
12
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_my);
    getSupportActionBar().hide();
}
Rajarshee Mitra
la source
12

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

style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
Dr Adams
la source
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.

Trixie Belarmino
la source
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 :)

sanket vetkoli
la source
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.

Hoang Nguyen Huu
la source
6

Sous res -> valeurs -> styles.xml

Changement

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

À

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

Shubham Shekhar
la source
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>
odlh
la source
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.

Ravi Chandra
la source
3

Tapez ce code dans votre onCreateméthode avant setContentView:

requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, 0);
pavel_coder
la source
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.

Varun Ved
la source
2

dans la fonction onCreate, ajoutez le code suivant

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

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

Rahul
la source
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.

Raif Deari
la source
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

Avinash R
la source
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" >
Mrad4Tech
la source
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);
Abhijeet
la source
1

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

requestWindowFeature(Window.FEATURE_NO_TITLE); 
setContentView(R.layout.activity_main); 
gaurav
la source
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>
Mohsen Emami
la source
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.

Lorenzo Barbagli
la source
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.

pourquoi
la source
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é.

John Melody Melissa
la source