Comment cacher la barre de titre pour une Activité en XML avec un thème personnalisé existant

Je souhaite cacher la barre de titre pour certaines de mes activités. Le problème est que j'ai appliqué un style à toutes mes activités, donc je ne peux pas simplement définir le thème sur @android: style / Theme.NoTitleBar.

L'utilisation du thème NoTitleBar en tant que parent pour mon style supprime la barre de titre pour de nombreuses activités.

  • Comment passer une grande collection entre les activités (flux de détail principal)
  • Comment vérifier si le toast a été rejeté ou non
  • Comment utiliser la liaison de données avec Fragment
  • Le curseur EditText et la couleur du pointeur sont présentés ci-dessous, Android 5.0
  • Contexte Android en dehors de la classe d'activité
  • Est-il possible de télécharger un ancien APK pour mon application depuis Google Play?
  • Puis-je définir un élément de style sans titre quelque part?

  • Aller à la page dans epub reader (PageTurner)
  • SharedPreferences ne partagera pas entre les activités
  • Faire pivoter une image avec une animation
  • Obtenir les valeurs ArrayList <HashMap <String, String >>
  • GetSupportFragmentManager () est indéfini
  • Copier le fichier de la base de données vers la carte SD sous Android
  • 30 Solutions collect form web for “Comment cacher la barre de titre pour une Activité en XML avec un thème personnalisé existant”

    Faites-le dans votre méthode onCreate() .

     //Remove title bar this.requestWindowFeature(Window.FEATURE_NO_TITLE); //Remove notification bar this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); //set content view AFTER ABOVE sequence (to avoid crash) this.setContentView(R.layout.your_layout_name_here); 

    this réfère à l' Activity .

    Vous pouvez modifier votre AndroidManifest.xml :

     <activity android:name=".MainActivity" android:label="@string/app_name" android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen"> 

    Vous pouvez l'utiliser pour chaque activité dans votre projet.

    Je fais maintenant ce qui suit.

    J'ai déclaré un style héritant de tout mon style général puis désactivé le titreBar.

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

    Maintenant, je peux définir ce style dans toutes les activités dans lesquelles je souhaite cacher la barre de titre écrasant le style large de l'application et hériter toutes les autres informations de style, sans duplication dans le code de style.

    Je n'aime pas le this.requestWindowFeature(Window.FEATURE_NO_TITLE); Parce que la barre de titre apparaît brièvement, puis disparaît.

    Je n'aime pas non plus l' android:theme="@android:style/Theme.NoTitleBar" car j'ai perdu tous les changements de android:theme="@android:style/Theme.NoTitleBar" Holo auxquels les utilisateurs des nouveaux appareils se sont habitués. J'ai donc rencontré cette solution.

    Dans votre dossier res / values , créez un fichier appelé styles.xml (s'il n'existe pas déjà). Dans ce fichier placez le code suivant:

     <resources xmlns:android="http://schemas.android.com/apk/res/android"> <style name="Theme.Default" parent="@android:style/Theme"></style> <style name="Theme.NoTitle" parent="@android:style/Theme.NoTitleBar"></style> <style name="Theme.FullScreen" parent="@android:style/Theme.NoTitleBar.Fullscreen"></style> </resources> 

    Ensuite, créez un res / values-v11 avec un autre fichier styles.xml (encore une fois cela peut exister). Dans ce fichier placez le code suivant:

     <resources xmlns:android="http://schemas.android.com/apk/res/android"> <style name="Theme.Default" parent="@android:style/Theme.Holo"></style> <style name="Theme.NoTitle" parent="@android:style/Theme.Holo.NoActionBar"></style> <style name="Theme.FullScreen" parent="@android:style/Theme.Holo.NoActionBar.Fullscreen"></style> </resources> 

    Et si vous ciblez 4.0+, créez un dossier res / values-v14 avec encore un autre fichier styles.xml (Oui, il se peut qu'il y ait déjà). Dans ce fichier placez le code suivant:

     <resources xmlns:android="http://schemas.android.com/apk/res/android"> <style name="Theme.Default" parent="@android:style/Theme.Holo.Light"></style> <style name="Theme.NoTitle" parent="@android:style/Theme.Holo.Light.NoActionBar"></style> <style name="Theme.FullScreen" parent="@android:style/Theme.Holo.Light.NoActionBar.Fullscreen"></style> </resources> 

    Enfin, avec tous ces fichiers créés, ouvrez votre fichier AndroidManifiest.xml , vous pouvez ajouter le code:

     android:theme="@style/Theme.NoTitle" 

    À la balise d'activité de l'activité pour laquelle vous ne souhaitez aucun titre ou à la balise d'application si vous souhaitez qu'elle s'applique à l'application complète.

    Maintenant, vos utilisateurs obtiendront les thèmes associés à la version de leur appareil avec la disposition d'écran que vous désirez.

    PS Modification de la valeur sur android:theme="@style/Theme.FullScreen" aura le même effet, mais aussi supprimer la barre de notification.

    La barre de titre peut être supprimée de deux façons, comme mentionné sur la page Android du développeur:

    Dans le fichier manifest.xml :

    1. Ajoutez la procédure suivante si vous souhaitez la supprimer pour toutes les activités d'une application:

       <application android:theme="@android:style/Theme.Black.NoTitleBar"> 
    2. Ou pour une activité particulière:

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

    Si vous utilisez this.requestWindowFeature(Window.FEATURE_NO_TITLE) utilisateur pourra encore voir la barre de titre juste pendant un moment lors de l'animation de lancement lorsque l'activité commence par onCreate . Si vous utilisez @android:style/Theme.Black.NoTitleBar comme indiqué ci-dessous, la barre de titre ne sera pas affichée pendant l'animation de lancement.

     <activity android:name=".MainActivity" android:label="My App" android:theme="@android:style/Theme.Black.NoTitleBar" android:screenOrientation="portrait"> 

    L'exemple ci-dessus évidemment remplacera votre thème d'application existant, si vous avez un thème existant puis ajoutez <item name="android:windowNoTitle">true</item> à celui-ci.

    La bonne réponse est probablement de ne pas étendre ActionbarActivity plutôt étendre uniquement l'activité


    Si vous utilisez toujours l'activité de la barre d'action, cela semble fonctionner:

     @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); getSupportActionBar().hide(); //<< this setContentView(R.layout.activity_main); } 

    Semble que cela fonctionne aussi:

     styles.xml: <style name="AppBaseTheme" parent="Theme.AppCompat.Light" > <item name="android:windowNoTitle">true</item> <!-- //this --> </style> 

    Je pourrais faire comme Scott Biggs a écrit. Ce genre de travaux. Sauf qu'il n'y a pas de thème alors. Je veux dire que le fond du menu des paramètres est transparent:

    Juste changer

     public class MainActivity extends ActionBarActivity { 

    À Activity ou FragmentActivity

     public class MainActivity extends Activity { 

    Cependant, je pourrais faire en sorte qu'il soit assez bien en utilisant la conception du matériau et ne pas supprimer la barre d'action: https://gist.github.com/shimondoodkin/86e56b3351b704a05e53

    1. Icône de l'application
    2. Définir des couleurs de la barre d'action pour correspondre à la conception.
    3. Définir l'icône dans le menu des paramètres
    4. Ajoutez plus d'icônes (boutons en haut)

    C'est par exemple le style de la barre d'action de compatibilité de conception matérielle.

    Créez un thème comme ci-dessous.

      <!-- Variation on the Light theme that turns off the title --> <style name="MyTheme" parent="android:style/Theme.Black"> <item name="android:windowNoTitle">true</item> </style> 

    Ajouter

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

    À l'intérieur d'AppTheme (styles.xml)

    Utilisez simplement getActionBar().hide(); Dans votre activité principale onCreate() méthode onCreate() .

    Ce qui fonctionne pour moi:

    1- dans styles.xml:

      <style name="generalnotitle" parent="Theme.AppCompat.Light" > <item name="android:windowNoTitle">true</item> <!-- //this --> </style> 

    2- en MainActivity

     @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); getSupportActionBar().hide(); //<< this setContentView(R.layout.activity_main); } 
    1. En manifeste héritent du style:

      <Activité android: name = ". MainActivity" android: theme = "@ style / generalnotitle">

    Vous pouvez utiliser ce code dans votre fichier java

    Ajoutez cette ligne avant de définir ou de charger votre vue

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

    Ajoutez les deux pour le thème que vous utilisez:

      <item name="windowActionBar">false</item> <item name="android:windowNoTitle">true</item> 

    Dans votre méthode onCreate , utilisez l'extrait suivant:

     this.requestWindowFeature(Window.FEATURE_NO_TITLE); 

    Il vous suffit de changer le style AppTheme dans Style.xml si vous remplacez la définition de DarkActionBar

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

    À NoActionBar

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

    AppTheme défini dans AndroidManifast.xml

    Ou si vous souhaitez cacher / afficher la barre de titre à n'importe quel point:

     private void toggleFullscreen(boolean fullscreen) { WindowManager.LayoutParams attrs = getWindow().getAttributes(); if (fullscreen) { attrs.flags |= WindowManager.LayoutParams.FLAG_FULLSCREEN; } else { attrs.flags &= ~WindowManager.LayoutParams.FLAG_FULLSCREEN; } getWindow().setAttributes(attrs); } 

    Lorsque j'ai essayé d'utiliser toutes ces réponses haut retournées, mon application s'est toujours écrasée. (Je pense qu'il a quelque chose à voir avec le "@android: style"?)

    La meilleure solution pour moi était d'utiliser ce qui suit:

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

    Il n'y a plus de barre d'en-tête / titre. Il suffit de l'inscrire dans <application>...</application> ou <activity>...</activity> fonction de si vous (ne) le désirez pas dans l'ensemble de l'application ou simplement une activité spécifique.

    Ajoutez ce style à votre fichier style.xml

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

    Après cette référence, ce nom de style dans votre androidManifest.xml dans l'activité perticulaire dans laquelle vous ne souhaitez pas voir la barre de titre, comme ci-dessous.

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

    La première réponse est l'amphibole. Voici mon explication: ajouter:

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

    Dans la méthode oncreate ().

    avant:

     super.onCreate(savedInstanceState); setContentView(R.layout.activity_start); 

    (Pas juste avant setContentView) si vous ne le faites pas, vous obtiendrez une suppression forcée. +1 cette réponse.

    Dans mon cas, si vous utilisez Android Studio 2.1 et que votre version SDK de compilation est 6.0, passez simplement à votre fichier manifest.xml et modifiez le code suivant:

    Voici le code:

     <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.lesterxu.testapp2"> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:supportsRtl="true" android:theme="@style/Theme.AppCompat.NoActionBar"> <activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest> 

    Et voici le snip shoot (voir le code de surbrillance): Entrez la description de l'image ici

    J'ai trouvé deux raisons pour lesquelles cette erreur pourrait se produire.

    Un. Les indicateurs de fenêtre sont déjà définis dans super.onCreate(savedInstanceState); Dans ce cas, vous pouvez utiliser l'ordre de commandes suivant:

     this.requestWindowFeature(Window.FEATURE_NO_TITLE); this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); super.onCreate(savedInstanceState); 

    Deux. Vous avez le bouton Retour / Haut dans le TitleBar, ce qui signifie que l'activité actuelle est un enfant hiérarchique d'une autre activité, auquel cas vous voudrez commenter ou supprimer cette ligne de code à partir de la méthode onCreate .

     getActionBar().setDisplayHomeAsUpEnabled(true); 

    C'est comme ça que ressemble le code complet. Notez l'importation de android.view.Window.

     package com.hoshan.tarik.test; import android.app.Activity; import android.os.Bundle; import android.view.Window; public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.activity_main); } } 

    J'utilise un widget de support Toolbar v7. Donc, afin de pouvoir supprimer ou masquer le Titre, nous devons écrire ceci.

     Toolbar myToolbar = (Toolbar) findViewById(R.id.my_toolbar); setSupportActionBar(myToolbar); //Remove¡ing title bar getSupportActionBar().setDisplayShowTitleEnabled(false); 

    Ahem, vous pouvez appliquer des thèmes à des activités individuelles en XML , sans titre. En d'autres termes, retirez-le de votre étiquette d'application, ouvrez la déclaration d'étiquette et placez-la dans la balise d'activité souhaitée.

    Cela a résolu mon problème

    En manifeste mon activité:

     <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:supportsRtl="true" android:theme="@style/AppTheme"> <activity android:name=".SplashScreen"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> 

    Dans le style sous "AppTheme" nom:

     <resources> <!-- Base application theme. --> <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"> **<item name="windowActionBar">false</item> <item name="android:windowNoTitle">true</item>** <!-- Customize your theme here. --> <item name="colorPrimary">@color/colorPrimary</item> <item name="colorPrimaryDark">@color/colorPrimaryDark</item> <item name="colorAccent">@color/colorAccent</item> </style> </resources> 

    Ajouter dans le fichier manifiest,

      android:theme="@android:style/Theme.Translucent.NoTitleBar" 

    Ajoutez la ligne suivante dans votre fichier java,

      this.requestWindowFeature(Window.FEATURE_NO_TITLE); 

    Si vous faites ce que les utilisateurs YaW et Doug Paul disent, vous devez être conscient que les fonctionnalités de la fenêtre doivent être définies avant d'appeler setContentView. Sinon, vous obtiendrez une exception.

    Modifiez simplement la balise parentale du thème de votre application à "Theme.AppCompat.Light.NoActionBar"

    Ajouter theme @ style / Theme.AppCompat.Light.NoActionBar dans votre activité sur AndroidManifest.xml comme ceci

     <activity android:name=".activities.MainActivity" android:theme="@style/Theme.AppCompat.Light.NoActionBar"> </activity> 

    Il y a des mentions dans cette publication, mais personne ne l'adresse explicitement, alors peut-être cela va-t-il sauver des gens quelque temps. Si vous êtes comme moi et avez plusieurs classes étendant une classe racine qui étend ActionBarActivity, il n'est peut-être pas immédiatement évident que tenter de définir cette activité dans un NoTitleBar / NoActionBar provoquera une erreur, notamment:

    "Vous devez utiliser un thème Theme.AppCompat (ou descendant) avec cette activité"

    Vous pouvez corriger cela en changeant les étendues à Activité.

    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.