J'essaie de recréer l'apparence de Theme.AppCompat.Light.DarkActionBar
avec la nouvelle barre d'outils de la bibliothèque de support.
Si je choisis Theme.AppCompat.Light
ma barre d'outils sera claire et si je choisis, Theme.AppCompat
elle sera sombre. (Techniquement, vous devez utiliser la .NoActionBar
version, mais pour autant que je sache, la seule différence est
<style name="Theme.AppCompat.NoActionBar">
<item name="windowActionBar">false</item>
<item name="android:windowNoTitle">true</item>
</style>
Maintenant il n'y a pas Theme.AppCompat.Light.DarkActionBar
mais naïvement je pensais que ce serait assez bien de faire le mien
<style name="Theme.AppCompat.Light.DarkActionBar.NoActionBar">
<item name="windowActionBar">false</item>
<item name="android:windowNoTitle">true</item>
</style>
Cependant, avec cela, mes barres d'outils sont toujours Light
thématiques. J'ai passé des heures à essayer différentes combinaisons de mélange du thème Dark (de base) et du thème Light, mais je ne trouve tout simplement pas de combinaison qui me permette d'avoir des arrière-plans clairs sur tout sauf les barres d'outils.
Existe-t-il un moyen d'obtenir le AppCompat.Light.DarkActionBar
look avec les importations android.support.v7.widget.Toolbar
?
ThemeOverlay.AppCompat.ActionBar
j'obtiens une barre d'outils blanche avec du texte noir, donc cela ne semble pas fonctionner très bien. Ne semble pas comme les soins du système de l'<item name="android:colorBackground">@color/background_material_dark</item>
enBase.ThemeOverlay.AppCompat.Dark
. Mais je vais continuer à creuser. (Et j'ai lu cette page. C'était l'un de mes points de départ. Cela ne semble toujours pas fonctionner.)android:background="?attr/colorPrimary"
dans la barre d'outils et<item name="colorPrimary">@color/background_material_dark</item>
dans mon style afin qu'elle adapte automatiquement la couleur principale de l'application.Edit: Après la mise à jour vers appcompat-v7: 22.1.1 et l'utilisation à la
AppCompatActivity
place deActionBarActivity
mon styles.xml ressemble à:Remarque: cela signifie que j'utilise un
Toolbar
fourni par le framework (NON inclus dans un fichier XML).Cela a fonctionné pour moi:
fichier styles.xml:
Mise à jour: Une citation du blog de Gabriele Mariotti .
la source
Ok, après avoir passé beaucoup de temps dans ce problème, c'est ainsi que j'ai réussi à obtenir l'apparence que j'espérais. J'en fais une réponse distincte pour que je puisse tout rassembler au même endroit.
C'est une combinaison de facteurs.
Tout d'abord, n'essayez pas de faire en sorte que les barres d'outils fonctionnent correctement à travers uniquement des thèmes. Cela semble impossible.
Appliquez donc les thèmes explicitement à vos barres d'outils comme dans la réponse oRRs
layout / toolbar.xml
Cependant, c'est la sauce magique. Afin d'obtenir les couleurs d'arrière-plan que j'espérais, vous devez remplacer l'
background
attribut dans les thèmes de votre barre d'outilsvalues / styles.xml:
puis incluez simplement votre disposition de barre d'outils dans vos autres mises en page
et vous êtes prêt à partir.
J'espère que cela aide quelqu'un d'autre pour que vous n'ayez pas à passer autant de temps que moi sur ce sujet.
(si quelqu'un peut comprendre comment faire ce travail en utilisant uniquement des thèmes, c'est-à-dire ne pas avoir à appliquer les thèmes explicitement dans les fichiers de mise en page, je soutiendrai volontiers leur réponse à la place)
ÉDITER:
Donc, apparemment, publier une réponse plus complète était un aimant pour un vote défavorable, je vais donc simplement accepter la réponse incomplète ci-dessus, mais laissez cette réponse ici au cas où quelqu'un en aurait réellement besoin. N'hésitez pas à continuer de voter si cela vous rend heureux.
la source
<item name="colorPrimary">@color/colorPrimary</item>
Ensuite, je suis libre d'utiliser l'android:background="?attr/colorPrimary"
attribut dans mon widget Barre d'outils.@android:color/transparent
vous évitez le problème lorsque vous appuyez / cliquez longuement sur un élément de menu, il y a une boîte autour du texte. Cela le prouve également pour l'avenir si la couleur de fond clair change à l'avenir.Le moyen le plus propre que j'ai trouvé pour le faire est de créer un enfant de « ThemeOverlay.AppCompat.Dark.ActionBar ». Dans l'exemple, j'ai défini la couleur d'arrière-plan de la barre d'outils sur ROUGE et la couleur du texte sur BLEU.
Vous pouvez ensuite appliquer votre thème à la barre d'outils:
la source
Pour personnaliser le style de la barre d'outils, créez d'abord un style personnalisé de la barre d'outils héritant de Widget.AppCompat.Toolbar, remplacez les propriétés, puis ajoutez-le au thème d'application personnalisé comme indiqué ci-dessous, voir http://www.zoftino.com/android-toolbar-tutorial pour plus d'informations sur la barre d'outils et les styles.
la source
Vous pouvez essayer ceci ci-dessous.
Et les éléments de détail, vous pouvez les trouver dans https://developer.android.com/reference/android/support/v7/appcompat/R.styleable.html#Toolbar
Voici encore plus:
TextAppearance.Widget.AppCompat.Toolbar.Title
,TextAppearance.Widget.AppCompat.Toolbar.Subtitle
,Widget.AppCompat.Toolbar.Button.Navigation
.J'espère que cela peut vous aider.
la source
Similaire à Arnav Rao, mais avec un parent différent:
Avec cette approche, l'apparence de la barre d'outils est entièrement définie dans les styles de l'application, vous n'avez donc pas besoin de placer de style sur chaque barre d'outils.
la source
android:toolbarStyle
c'est l'API 21+ pourandroid.widget.Toolbar
.toolbarStyle
est AppCompat pourandroid.support.v7.widget.Toolbar
.MyToolbar
le style ne doitWidget.AppCompat.Toolbar
pas étendre un thème.