106 votes

Couleur d’arrière plan du titre

Dans mon application android, je tiens la barre de titre de la norme de base/décoloration.

Pour changer la couleur de texte vous avez `` , est-il possible de changer la couleur d’arrière-plan de la barre ?

186voto

ccheneson Points 24031

Ce fil vous permettra de commencer avec la construction de votre propre barre de titre dans un fichier xml et de les utiliser dans vos activités

Modifier

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

res/layout/mytitle.xml - C'est la vue qui représentera la barre de titre

<?xml version="1.0" encoding="utf-8"?>
<TextView
  xmlns: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 la valeur par défaut d'android thème et juste changer la couleur d'arrière-plan de l'arrière-plan du titre. Nous avons donc créer un thème qui hérite le thème par défaut et définir le style d'arrière-plan de notre propre style.

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="customTheme" parent="android:Theme"> 
        <item name="android:windowTitleBackgroundStyle">@style/WindowTitleBackground</item>   
    </style> 
</resources>

res/values/styles.xml - C'est là que nous nous sommes fixé le thème de l'utilisation de la couleur que nous voulons pour l'arrière-plan du titre

<?xml version="1.0" encoding="utf-8"?>
<resources> 
   <style name="WindowTitleBackground">     
        <item name="android:background">@color/titlebackgroundcolor</item>                   
    </style>
</resources>

res/values/colors.xml - choisir la couleur que vous voulez

<?xml version="1.0" encoding="utf-8"?>
<resources>   
    <color name="titlebackgroundcolor">#3232CD</color>
    <color name="titletextcolor">#FFFF00</color>
</resources>

Dans le AndroidMANIFEST.xml, définir le thème de l'attribut, soit dans l'application (pour l'ensemble de l'application) ou l'activité (seulement cette activité) tags

<activity android:name=".CustomTitleBar" android:theme="@style/customTheme" ...

À partir de l'Activité (appelé 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);

}

18voto

Sephy Points 18893

Merci pour cette explication claire, cependant je voudrais ajouter un peu plus pour votre réponse en posant une question liée (n'a pas vraiment envie de faire un nouveau post comme celui-ci est le sous-sol, sur ma question).

Je suis en déclarant ma barre de titre dans une super-classe à partir de laquelle, tous mes autres activités sont des enfants, d'avoir à changer la couleur de la barre qu'une seule fois. Je voudrais également ajouter une icône et modifier le texte dans la barre. J'ai fait quelques tests, et ont réussi à changer l'un ou l'autre mais pas les deux en même temps (à l'aide de setFeatureDrawable et setTitle). L'idéal serait bien sûr de suivre les explications dans le thread donné dans le lien, mais comme je suis en déclarant dans une super-classe, j'ai un problème, en raison de la mise en page dans setContentView et la R. id.myCustomBar, parce que si je me souviens bien, je peux appeler setContentView qu'une seule fois...

MODIFIER Trouvé ma réponse :

Pour ceux qui, comme moi, aiment travailler avec des super-classes, car il est idéal pour obtenir un menu est disponible partout dans une application, il fonctionne de la même manière ici.

Juste ajouter ceci à votre super-classe:

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 le textview comme variable de classe protégée)

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

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

et votre barre de titre sera édité.

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

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal" android:layout_width="fill_parent"
android:layout_height="fill_parent" android:background="@color/background">
<ImageView android:layout_width="25px" android:layout_height="25px"
    android:src="@drawable/icontitlebar"></ImageView>
<TextView android:id="@+id/customtitlebar"
    android:layout_width="wrap_content" android:layout_height="fill_parent"
    android:text="" android:textColor="@color/textcolor" android:textStyle="bold"
    android:background="@color/background" android:padding="3px" />
</LinearLayout>

11voto

mikeplate Points 709

Il y a une autre façon de changer la couleur d’arrière-plan, cependant il y a une entaille et peut échouer sur les futures versions d’Android if la hiérarchie d’affichage de la fenêtre et son titre est changé. Toutefois, le code ne sera pas tomber en panne, juste manquer définissant la couleur recherchée, dans un tel cas.

Dans votre activité, comme onCreate, procédez comme :

6voto

Pratishtha Goriya Points 109
<pre><code></code><p><strong>titre</strong> <strong>barre de titre</strong> Cela aura une incidence sur toutes les activités liées à votre application</p></pre>

2voto

skyman Points 1293

Je suppose que non. Vous pouvez créer une activité éponyme et créer votre propre barre de titre dans la mise en activité.

Vérifier cette, ligne 63 et ci-dessous :

``

définit customview au lieu de l’affichage de titre par défaut.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X