Définir la couleur d’arrière-plan du titre

Dans mon application Android, je veux que la barre de titre standard / basique change de couleur.

Pour modifier la couleur du texte que vous avez setTitleColor(int color) , existe-t-il un moyen de modifier la couleur d’arrière-plan de la barre?

Ce thread vous aidera à créer votre propre barre de titre dans un fichier XML et à l’utiliser dans vos activités.

modifier

Voici un bref résumé du contenu du lien ci-dessus – Ceci est juste pour définir la couleur du texte et l’arrière-plan de la barre de titre – pas de redimensionnement, pas de boutons, juste l’exemple le plus simple

res / layout / mytitle.xml – Ceci est la vue qui représentera la barre de titre

 < ?xml version="1.0" encoding="utf-8"?>  

res / values ​​/ themes.xml – Nous voulons conserver le thème Android par défaut et simplement modifier la couleur d’arrière-plan de l’arrière-plan du titre. Nous créons donc un thème qui hérite du thème par défaut et définit le style d’arrière-plan selon notre propre style.

 < ?xml version="1.0" encoding="utf-8"?>    

res / values ​​/ styles.xml – C’est ici que nous définissons le thème pour utiliser la couleur que nous voulons pour l’arrière-plan du titre

 < ?xml version="1.0" encoding="utf-8"?>    

res / values ​​/ colors.xml – Définit ici la couleur que vous voulez

 < ?xml version="1.0" encoding="utf-8"?>  #3232CD #FFFF00  

Dans le fichier AndroidMANIFEST.xml , définissez l’atsortingbut de thème dans l’application (pour l’application entière) ou dans les balises d’activité (uniquement cette activité).

  

À partir de l'activité (appelée CustomTitleBar):

 @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_CUSTOM_TITLE); setContentView(R.layout.main); getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.mytitle); } 

Merci pour cette explication claire, cependant je voudrais append un peu plus à votre réponse en posant une question liée (ne voulez pas vraiment faire un nouveau post car celui-ci est le sous-sol de ma question).

Je déclare mon titre dans une Superclasse à partir de laquelle, toutes mes autres activités sont des enfants, pour changer la couleur de la barre une seule fois. Je voudrais aussi append une icône et changer le texte dans la barre. J’ai fait des tests et réussi à changer l’un ou l’autre mais pas les deux en même temps (en utilisant setFeatureDrawable et setTitle). La solution idéale serait bien sûr de suivre l’explication dans le fil donné dans le lien, mais comme je le déclare dans une super-classe, j’ai un problème dû à la mise en page dans setContentView et R.id.myCustomBar, car si rappelez-vous bien que je ne peux appeler setContentView qu’une seule fois …

EDIT Trouvé ma réponse:

Pour ceux qui, comme moi, aiment travailler avec des super-classes parce que c’est génial pour obtenir un menu disponible partout dans une application, cela fonctionne de la même manière ici.

Ajoutez simplement ceci à votre superclasse:

 requestWindowFeature(Window.FEATURE_CUSTOM_TITLE); setContentView(R.layout.customtitlebar); getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.customtitlebar); customTitleText = (TextView) findViewById(R.id.customtitlebar); 

(vous devez déclarer la textview comme variable de classe protégée)

Et puis la puissance de ceci est que, partout dans votre application (si par exemple toutes vos activités sont des enfants de cette classe), il vous suffit d’appeler

 customTitleText.setText("Whatever you want in title"); 

et votre barre de titre sera modifiée.

Le XML associé dans mon cas est (R.layout.customtitlebar):

 < ?xml version="1.0" encoding="utf-8"?>     

Il existe un autre moyen de modifier la couleur d’arrière-plan, mais il s’agit d’un piratage qui peut échouer sur les futures versions d’Android si la hiérarchie de la vue de la fenêtre et son titre sont modifiés. Cependant, le code ne tombera pas en panne, il ne suffit pas de définir la couleur souhaitée, dans un tel cas.

Dans votre activité, comme onCreate, faites:

 View titleView = getWindow().findViewById(android.R.id.title); if (titleView != null) { ViewParent parent = titleView.getParent(); if (parent != null && (parent instanceof View)) { View parentView = (View)parent; parentView.setBackgroundColor(Color.rgb(0x88, 0x33, 0x33)); } } 
 protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); View titleView = getWindow().findViewById(android.R.id.title); if (titleView != null) { ViewParent parent = titleView.getParent(); if (parent != null && (parent instanceof View)) { View parentView = (View)parent; parentView.setBackgroundColor(Color.RED); } } 

sur le code ci-dessus, vous pouvez essayer, vous pouvez utiliser le titre au lieu de la barre de titre, cela affectera toutes les activités de votre application

Ce code permet de modifier l’arrière-plan de la barre de titre par programmation sous Android. Changez la couleur pour n’importe quelle couleur que vous voulez.

 public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.your_layout); getActionBar().setBackgroundDrawable(new ColorDrawable(Color.parseColor("#1c2833"))); } 

Je suppose que non. Vous pouvez créer une activité sans titre et créer votre propre barre de titre dans la présentation de l’activité.

Vérifiez ceci , ligne 63 et ci-dessous:

getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.custom_title_1)

définit la vue personnalisée au lieu de la vue de titre par défaut.

Jetez un coup d’œil sur les platforms/android-2.1/data/res/layout/screen.xml du SDK. Il semble y définir un titre. Vous pouvez souvent examiner des modèles de ce type et emprunter les style="?android:attr/windowTitleStyle" que vous pouvez ensuite utiliser et remplacer dans vos propres TextViews.

Vous pourrez peut-être même sélectionner le titre pour un ajustement direct en procédant comme suit:

 TextView title = (TextView)findViewById(android.R.id.title); 

Essayez avec le code suivant

 View titleView = getWindow().findViewById(android.R.id.title); if (titleView != null) { ViewParent parent = titleView.getParent(); if (parent != null && (parent instanceof View)) { View parentView = (View)parent; parentView.setBackgroundColor(Color.RED); } } 

utilisez également ce lien très utile: http://nathanael.hevenet.com/android-dev-changing-the-title-bar-background/

Il existe une alternative plus simple pour changer la couleur de la barre de titre, en utilisant la bibliothèque de support appcompat v7 fournie par Google.

Voir ce lien sur la façon de configurer cette bibliothèque de support: https://developer.android.com/tools/support-library/setup.html

Une fois cela fait, il suffit d’append les lignes suivantes à votre fichier res / values ​​/ styles.xml:

    

(en supposant que “titlebackgroundcolor” soit défini dans vos res / values ​​/ colors.xml, par exemple:

 #0000AA 

)

Les choses semblent s’être améliorées depuis Android 5.0 (API niveau 21).

Je pense que ce que vous cherchez est quelque chose comme ceci:

  

Voir ici pour référence:

https://developer.android.com/training/material/theme.html#ColorPalette