Je pense qu'il n'est pas nécessaire d'utiliser un titre personnalisé pour changer la couleur d'arrière-plan en barre de titre. vérifier cet article
Deepthi Jabili
Je regarderais la réponse d'Edwinfad au lieu de celle acceptée obsolète.
zgc7009
Réponses:
186
Ce fil vous aidera à créer votre propre barre de titre dans un fichier xml et à l'utiliser dans vos activités
Éditer
Voici un bref résumé du contenu du lien ci-dessus - Il s'agit simplement de 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 - C'est la vue qui représentera la barre de titre
<?xml version="1.0" encoding="utf-8"?><TextViewxmlns:android="http://schemas.android.com/apk/res/android"android:id="@+id/myTitle"android:text="This is my new title"android:layout_width="fill_parent"android:layout_height="fill_parent"android:textColor="@color/titletextcolor"/>
res / values / themes.xml - Nous voulons conserver le thème Android par défaut et avons juste besoin de changer 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éfinissons le style d'arrière-plan sur notre propre style.
Dans AndroidMANIFEST.xml , définissez l'attribut de thème soit dans l'application (pour l'ensemble de l'application), soit dans les balises d'activité (uniquement cette activité)
La plupart du temps, le simple fait de fournir un lien est une réponse très bon marché, et sur stackoverflow, ce n'est pas vraiment apprécié. Essayez d'obtenir une partie des connaissances à partir du lien vers cette page. Vous obtiendrez de plus en plus de connaissances dans la communauté, et même si le lien est en panne, votre réponse fournit toujours des termes de recherche qui peuvent diriger d'autres personnes dans la direction.
Janusz
7
@Janusz: Vous avez tout à fait raison - J'ai donc mis à jour l'article avec l'exemple le plus simple afin que les gens puissent commencer avec au lieu de lire le fil de discussion dans le lien ci-dessus
ccheneson
3
Après avoir écrasé le style Android, vous n'avez pas besoin d'ajouter le titre personnalisé à partir du code si vous souhaitez simplement changer la couleur d'arrière-plan
Janusz
1
Comme Janusz l'a dit, vous n'avez pas besoin d'avoir une vue personnalisée si vous souhaitez uniquement remplacer le style utilisé (sans ajouter de nouvelles vues). Dans ce cas, vous n'avez pas non plus besoin de demander FEATURE_CUSTOM_STYLE. Enfin, vous pouvez définir le style au niveau de l'application pour l'appliquer à toutes vos activités à la fois. Merci pour le code, au fait.
Eric Kok
2
cela ne change pas la couleur d'arrière-plan du titre, seule la couleur du texte est modifiée. même si je change la couleur de la barre de titre <color name = "titlebackgroundcolor"> # 3232CD </color>. Est-ce que je fais quelque chose de mal?
Shaista Naaz
18
Merci pour cette explication claire, mais j'aimerais ajouter un peu plus à votre réponse en posant une question liée (je ne veux pas vraiment faire un nouveau message car celui-ci est le sous-sol de ma question).
Je déclare ma barre de titre dans une Superclasse à partir de laquelle, toutes mes autres activités sont des enfants, pour devoir changer la couleur de la barre une seule fois. Je voudrais également ajouter une icône et changer le texte dans la barre. J'ai fait quelques tests et j'ai 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 de discussion donné dans le lien, mais comme je le déclare dans une superclasse, j'ai un problème dû à la disposition de setContentView et du R.id.myCustomBar, car si je rappelez-vous bien que je ne peux appeler setContentView qu'une seule fois ...
EDIT
J'ai trouvé ma réponse:
Pour ceux qui, comme moi, aiment travailler avec des superclasses parce que c'est génial pour avoir un menu disponible partout dans une application, cela fonctionne de la même manière ici.
(vous devez déclarer le textview comme variable de classe protégée)
Et puis le pouvoir 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):
Il existe un autre moyen de changer la couleur d'arrière-plan, mais il s'agit d'un piratage et pourrait échouer sur les futures versions d'Android si la hiérarchie d'affichage de la fenêtre et son titre sont modifiés. Cependant, le code ne plantera pas, manquez simplement la définition de la couleur souhaitée, dans un tel cas.
très bon et simple aussi. Mais je veux vous demander une chose que celui-ci le fait à partir du code, donc il est peu retardé. Afin d'éviter une telle situation, je devrai tout écrire dans le xml et rien dans le code. alors pouvez-vous s'il vous plaît me guider là-dessus?
Shaista Naaz
Je pense que vous avez la solution dans la réponse sélectionnée ci-dessus. Vous devez définir un thème personnalisé pour l'activité et définir son android: windowTitleBackgroundStyle sur la couleur souhaitée.
mikeplate
7
Ce code permet de modifier l'arrière-plan de la barre de titre par programme dans Android. Changez la couleur en n'importe quelle couleur que vous voulez.
Cela a été introduit dans l'API 11 (3.0 Honeycomb) qui est certainement suffisamment obsolète à ce stade pour considérer cette option comme valide.
zgc7009
Mais je l'utilise toujours dans toutes mes applications récentes avec targetSdkVersion = "23" sans obtenir d'informations obsolètes.
Edwinfad
Absolument, il est 100% bien de l'utiliser. Il n'a été remplacé par rien, mais l'utiliser avant l'API 11 (ce que très peu de gens feront) doit être évité, du moins sans bibliothèque de compatibilité.
zgc7009
C'est noté. @ zgc7009
Edwinfad
1
Utilisez plutôt getSupportActionBar () si vous utilisez AppCompatActivity
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
Comment / où puis-je créer une barre de titre personnalisée / propre?
Thizzer
2
Jetez un œil au platforms/android-2.1/data/res/layout/screen.xmlSDK. Il semble y définir un titre. Vous pouvez fréquemment examiner des mises en page comme celle-ci et emprunter
style="?android:attr/windowTitleStyle"
styles que vous pouvez ensuite utiliser et remplacer dans vos propres TextViews.
Vous pourrez peut-être même sélectionner le titre pour un peaufinage direct en faisant:
TextView title =(TextView)findViewById(android.R.id.title);
Cela fonctionne-t-il toujours avec Lollipop? titleView semble renvoyer null pour moi.
WORMSS
1
Il existe une alternative plus simple pour changer la couleur de la barre de titre, en utilisant la bibliothèque de support v7 appcompat fournie par Google.
Les choses semblent s'être améliorées / simplifiées depuis Android 5.0 (niveau d'API 21).
Je pense que ce que vous recherchez est quelque chose comme ceci:
<stylename="AppTheme"parent="AppBaseTheme"><!-- Top-top notification/status bar color:--><!--<item name="colorPrimaryDark">#000000</item>--><!-- App bar color:--><item name="colorPrimary">#0000FF</item></style>
Réponses:
Ce fil vous aidera à créer votre propre barre de titre dans un fichier xml et à l'utiliser dans vos activités
Éditer
Voici un bref résumé du contenu du lien ci-dessus - Il s'agit simplement de 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 - C'est la vue qui représentera la barre de titre
res / values / themes.xml - Nous voulons conserver le thème Android par défaut et avons juste besoin de changer 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éfinissons le style d'arrière-plan sur notre propre style.
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
res / values / colors.xml - Définissez ici la couleur souhaitée
Dans AndroidMANIFEST.xml , définissez l'attribut de thème soit dans l'application (pour l'ensemble de l'application), soit dans les balises d'activité (uniquement cette activité)
À partir de l'activité (appelée CustomTitleBar):
la source
Merci pour cette explication claire, mais j'aimerais ajouter un peu plus à votre réponse en posant une question liée (je ne veux pas vraiment faire un nouveau message car celui-ci est le sous-sol de ma question).
Je déclare ma barre de titre dans une Superclasse à partir de laquelle, toutes mes autres activités sont des enfants, pour devoir changer la couleur de la barre une seule fois. Je voudrais également ajouter une icône et changer le texte dans la barre. J'ai fait quelques tests et j'ai 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 de discussion donné dans le lien, mais comme je le déclare dans une superclasse, j'ai un problème dû à la disposition de setContentView et du R.id.myCustomBar, car si je rappelez-vous bien que je ne peux appeler setContentView qu'une seule fois ...
EDIT J'ai trouvé ma réponse:
Pour ceux qui, comme moi, aiment travailler avec des superclasses parce que c'est génial pour avoir un menu disponible partout dans une application, cela fonctionne de la même manière ici.
Ajoutez simplement ceci à votre superclasse:
(vous devez déclarer le textview comme variable de classe protégée)
Et puis le pouvoir 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
et votre barre de titre sera modifiée.
Le XML associé dans mon cas est (R.layout.customtitlebar):
la source
Il existe un autre moyen de changer la couleur d'arrière-plan, mais il s'agit d'un piratage et pourrait échouer sur les futures versions d'Android si la hiérarchie d'affichage de la fenêtre et son titre sont modifiés. Cependant, le code ne plantera pas, manquez simplement la définition de la couleur souhaitée, dans un tel cas.
Dans votre activité, comme onCreate, faites:
la source
Ce code permet de modifier l'arrière-plan de la barre de titre par programme dans Android. Changez la couleur en n'importe quelle couleur que vous voulez.
la source
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
la source
Je suppose que non. Vous pouvez créer une activité sans titre et créer votre propre barre de titre dans la mise en page 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 titre par défaut.
la source
Jetez un œil au
platforms/android-2.1/data/res/layout/screen.xml
SDK. Il semble y définir un titre. Vous pouvez fréquemment examiner des mises en page comme celle-ci et emprunterstyle="?android:attr/windowTitleStyle"
styles que vous pouvez ensuite utiliser et remplacer dans vos propres TextViews.Vous pourrez peut-être même sélectionner le titre pour un peaufinage direct en faisant:
la source
Essayez avec le code suivant
Utilisez également ce lien, c'est très utile: http://nathanael.hevenet.com/android-dev-changing-the-title-bar-background/
la source
Il existe une alternative plus simple pour changer la couleur de la barre de titre, en utilisant la bibliothèque de support v7 appcompat fournie par Google.
Consultez ce lien pour savoir comment configurer cette bibliothèque de support: https://developer.android.com/tools/support-library/setup.html
Une fois que vous avez fait cela, il suffit d'ajouter les lignes suivantes à votre fichier res / values / styles.xml:
(en supposant que "titlebackgroundcolor" est défini dans votre res / values / colors.xml, par exemple:
)
la source
Les choses semblent s'être améliorées / simplifiées depuis Android 5.0 (niveau d'API 21).
Je pense que ce que vous recherchez est quelque chose comme ceci:
Voir ici pour référence:
https://developer.android.com/training/material/theme.html#ColorPalette
la source
J'ai fait cela en changeant les valeurs de couleur de style dans "res" -> "values" -> "colors.xml"
Cela changera les couleurs pour tout le projet, ce qui me convient.
la source
tu peux l'utiliser.
la source
Collez ce code après setContentView ou dans onCreate
si vous avez un code couleur, utilisez ceci;
si vous voulez un code spécifique de la bibliothèque de couleurs, utilisez ceci;
la source