web-dev-qa-db-fra.com

Comment désactiver la barre d'action de manière permanente

Je peux cacher 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 quelque chose, la barre d'action s'affiche à nouveau. Comment puis-je désactiver la barre d'action de manière permanente?

127
Biji

En définissant un thème d'activité dans Manifest,

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

Si vous utilisez Theme.Holo.Light et souhaitez utiliser la variante Theme.Holo.Light.NoActionBar sur des appareils antérieurs à la version 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" ... />
240
monchote

J'utilise le code suivant dans ma fonction onCreate:

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

Source: https://developer.Android.com/guide/topics/ui/actionbar.html

32
rsc
<application
    .
    .
    Android:theme="@Android:style/Theme.Holo.Light.NoActionBar"
    . >

peut-être que cela vous aide

29
semih

Avec la super-classe d'activité générée par défaut de Android Studio, il s'agit de ActionBarActivity, puis aucune des solutions dans les autres réponses ne fonctionne. Pour résoudre simplement le changement de super-classe:

public class xxxActivity extends ActionBarActivity{

à:

public class xxxActivity extends Activity {
23
Piotr Müller

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

Android:theme="@style/AppTheme.NoActionBar" 
12
reza.cse08

La meilleure façon de trouver des thèmes personnalisés, sans barre d’action, est de créer une SuperClass pour toutes les activités de mon projet. Dans sa fonction onCreate (), appelez la ligne de code suivante -

this.requestWindowFeature(Window.FEATURE_NO_TITLE);

Ça marche toujours pour moi. Le seul problème de cette approche est que vous verrez la barre d’action une fraction de seconde lors du démarrage de l’application (pas l’activité, mais l’app complète).

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

Allez à styles.xml Remplacez cette DarkActionBar par NoActionBar

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

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 procéder comme suit

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

Vous pouvez ainsi conserver toutes les propriétés de votre thème de base sans avoir à les ajouter explicitement à votre thème NoActionBar :)

6
sanket vetkoli

N'utilisez pas le thème Holo et la barre d'action disparaîtra. Ce code fonctionne pour moi sur API 8+, avec le support de 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é.

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

6
Hoang Nguyen Huu

Heres une solution rapide.

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

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

Sous res -> valeurs -> styles.xml

changement

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

À

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

5
user8231406

Vous pouvez forcer masquer la barre d'action simplement:

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

Utilisez simplement votre thème par défaut.

4
Trixie Belarmino

Tapez ce code dans votre méthode onCreate avant setContentView:

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

Voici les étapes à suivre 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. Remplacez maintenant le parent par tout autre thème contenant "NoActionBar" dans son nom.

    une. Vous pouvez également vérifier l'aspect d'un thème en basculant sur l'onglet Création du fichier 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 s'étend AppCompatActivity, assurez-vous d'utiliser un thème AppCompat.

3
Ravi Chandra

J'aimerais plutôt publier une approche de concepteur à ce sujet, cela gardera le design séparé de votre logique métier:

Étape 1. Créez un nouveau style dans (res-> valeurs-> styles.xml): 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 fichier AndroidManifest.xml, ajoutez ce thème à l'activité souhaitée: 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.

3
Varun Ved

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

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

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

2
Raif Deari

essayez ceci dans votre manifestiste

 <activity
        Android:name=".MainActivity"
        Android:theme="@Android:style/Theme.Holo.NoActionBar"
        Android:label="@string/app_name" >
1
Mrad4Tech
  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
Abhijeet

Il existe deux manières de désactiver ActionBar dans Android.

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

Une autre solution intéressante dans laquelle vous souhaitez conserver ViewPager tout en supprimant la barre d’action est d’avoir un style identique à celui indiqué.

<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 de numérotation dans Android affichent ViewPager sans la barre d’action.

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

1
Avinash R

dans la fonction onCreate, ajoutez le code suivant

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

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

1
Rahul

J'utilise cette solution:

dans le manifeste, dans votre balise d'activité:

Android:label="@string/empty_string"

et dans strings.xml:

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

De cette façon, vous conservez ActionBar (ou barre d'outils) avec le titre, mais lorsque Activity est créé, le titre est automatiquement vide.

0
Lorenzo Barbagli

Curieusement, aucune de ces solutions n’a fonctionné pour moi lors de la construction d’un Nexus 7 sous 4.4.2 (API 19). Pour la plupart, du moins avec la dernière version de Android Studio (1.2.1.1) après la création d'une application d'activité vide, le:

Android: theme = "@ style/AppTheme"

est dans l'élément d'application, pas 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 s'exécutera pas ... si cela vous arrive, allez 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
whyoz