Question Comment masquer la barre de titre d'une activité en XML avec un thème personnalisé existant


Je veux 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 à @android:style/Theme.NoTitleBar.

En utilisant le NoTitleBar thème en tant que parent pour mon style supprimerait la barre de titre de toutes mes activités.

Puis-je définir un élément de style sans titre quelque part?


785
2018-04-07 08:48


origine


Réponses:


Faites ceci dans votre onCreate() méthode.

//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 se réfère à la Activity.


995
2018-04-07 09:35



Vous pouvez modifier votre AndroidManifest.xml:

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

Ou utiliser android:theme="@android:style/Theme.Black.NoTitleBar" si vous n'avez pas besoin d'une activité en plein écran.

Remarque: Si vous avez déjà utilisé une vue "par défaut", vous devriez également changer la classe parente AppCompatActivity à Activity.


484
2017-09-20 14:56



J'ai maintenant fait ce qui suit.

J'ai déclaré un style héritant de tout de mon style général, puis désactivant le titleBar.

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

Maintenant, je peux définir ce style pour chaque activité dans laquelle je veux cacher la barre de titre en écrasant le style large de l'application et en héritant toutes les autres informations de style, donc pas de duplication dans le code de style.

Pour appliquer le style à une activité particulière, ouvrez AndroidManifest.xml et ajoutez l'attribut suivant à activity marque;

<activity
    android:theme="@style/generalnotitle">

359
2018-04-13 08:15



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 le android:theme="@android:style/Theme.NoTitleBar" parce que j'ai perdu tous les changements 3.0+ Holo auxquels les utilisateurs des nouveaux appareils se sont habitués. Donc je suis tombé sur cette solution.

Dans ton res / valeurs dossier faire un fichier appelé styles.xml (Si ce n'est pas déjà fait) 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 styles.xml fichier (Encore une fois, cela peut déjà 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 la version 4.0+, créez un res / values-v14 dossier avec encore un autre styles.xml fichier (Oui, il peut déjà être là). 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 AndroidManifiest.xml fichier, vous pouvez ajouter le code:

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

à la balise d'activité de l'activité pour laquelle vous ne voulez pas de titre ou à la balise d'application si vous souhaitez qu'elle s'applique à l'ensemble de l'application.

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

P.S. Changer la valeur pour android:theme="@style/Theme.FullScreen" aura le même effet, mais aussi supprimer la barre de notification.


164
2018-01-02 01:06



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

dans le manifest.xml fichier:

  1. Ajouter ce qui suit dans application si vous voulez le supprimer pour toutes les activités dans 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">
    

98
2018-03-20 11:48



la réponse correcte est probablement de ne pas étendre ActionbarActivity plutôt que de simplement étendre l'activité


si vous utilisez toujours l'activité de la barre d'action semble que cela fonctionne:

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

Cela semble aussi fonctionner:

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 l'arrière-plan du menu des paramètres est transparent:

juste changer

public class MainActivity extends ActionBarActivity {

à Activité ou FragmentActivity

public class MainActivity extends Activity  {

cependant je pourrais le faire sembler assez bon en utilisant la conception matérielle et ne pas enlever la barre d'action: https://gist.github.com/shimondoodkin/86e56b3351b704a05e53

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

C'est par l'exemple de stylisme de la barre d'action de compatibilité matérielle.


44
2018-01-16 02:49



Si tu utilises this.requestWindowFeature(Window.FEATURE_NO_TITLE) l'utilisateur sera toujours en mesure de voir la barre de titre juste pendant un moment au cours de l'animation de lancement lorsque l'activité commence à travers onCreate. Si tu utilises @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 remplacera évidemment votre thème d'application existant, si vous avez un thème existant, puis ajoutez <item name="android:windowNoTitle">true</item> à lui.


41
2017-10-17 07:04



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- dans MainActivity

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

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

19
2017-10-23 21:32



quand j'ai essayé d'utiliser toutes ces réponses haut upvoted mon application a toujours planté. (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"

Aucun en-tête / barre de titre plus. Il suffit de le placer dans le <application>...</application> ou <activity>...</activity> en fonction de si vous ne le souhaitez pas dans l'ensemble de l'application ou juste une activité spécifique.


18
2018-06-10 21:46