Comment puis-je styler Toolbar appcompat - v7 comme Theme.AppCompat.Light.DarkActionBar ?

? Liminal @ | Original: StackOverFlow

Je essaie de recréer le look 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 la lumière et si je choisis Theme.AppCompat il fera nuit . ( Techniquement, vous devez utiliser la version .NoActionBar, mais pour autant que je peux dire à 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 ça serait assez bon pour juste faire mon propre

<style name="Theme.AppCompat.Light.DarkActionBar.NoActionBar">
    <item name="windowActionBar">false</item>
    <item name="android:windowNoTitle">true</item>
</style>

Cependant, avec cette mes barres d'outils sont toujours thème Light . Je ai passé des heures maintenant essayer différentes combinaisons de mélange de la ( base) Dark theme et le thème Lumière mais je ne peux pas trouver une combinaison qui me permettra ai fonds clairs sur tout, mais les barres d'outils .

Est-il possible d'obtenir le AppCompat.Light.DarkActionBar regarder avec importation android.support.v7.widget.Toolbar s ' ?



Top 5 Respuesta

1Yong @

Yout peut essayer ci-dessous.

<style name="MyToolbar" parent="Widget.AppCompat.Toolbar">
    <!-- your code here -->
</style>

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 : «____», «____», «____» .

Je espère que cela peut vous aider .



2oRRs @

La méthode recommandée pour le style de la barre d'outils pour un TextAppearance.Widget.AppCompat.Toolbar.Title clone serait d'utiliser TextAppearance.Widget.AppCompat.Toolbar.Subtitle en tant que parent / thème de l'application et de manipuler la mise en page de la barre d'outils .

Le toolbar.xml je inclus dans chaque activité est la suivante:

Widget.AppCompat.Toolbar.Button.Navigation

Si vous payez une attention particulière à " l'application: thème " et " l'application: popupTheme ", vous verrez comment se adapter facilement le style à vos besoins spécifiques .

Lien utile pour AppCompat v21 en général: https://chris.banes.me/2014/10/17/appcompat-v21/

3Liminal @

OK après avoir coulé façon trop de temps sur ce problème ce est la façon dont je ai réussi à obtenir l'apparence que je espérais . Je fais une réponse distincte, donc je peux tout en un seul endroit .

Ce est une combinaison de facteurs .

Tout d'abord, ne pas essayer d'obtenir les barres d'outils pour jouer gentil travers seulement thèmes . Il semble impossible .

Donc appliquer des thèmes explicitement à vos barres d'outils comme dans http://stackoverflow.com/a/26504082/301341

layout / toolbar.xml

Light.DarkActionBar

Toutefois, ce est la sauce magique. Afin de réellement obtenir les couleurs de fond je espérais vous devez remplacer le Theme.AppCompat.Light.NoActionBar attribut dans vos thèmes de la barre d'outils

valeurs / styles.xml :

<android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_height="wrap_content"
    android:layout_width="match_parent"
    android:minHeight="?attr/actionBarSize"
    android:background="@color/background_material_dark"
    app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
    app:popupTheme="@style/ThemeOverlay.AppCompat.Light"/>

alors seulement inclure votre mise en page de la barre d'outils dans vos autres dispositions

<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.Toolbar
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_alignParentTop="true"
    android:layout_width="match_parent"
    android:layout_height="?attr/actionBarSize"
    app:theme="@style/Dark.Overlay"
    app:popupTheme="@style/Dark.Overlay.LightPopup" />

et vous êtes bon pour aller .

Espérons que cela aide quelqu'un d'autre que vous ne avez pas à passer autant de temps sur ce que je ai .

( si quelqu'un peut comprendre comment faire ce travail en utilisant seulement des thèmes, à dire non avoir à appliquer les thèmes explicitement dans les fichiers de mise en page je serai heureux soutiens leur réponse à la place )

EDIT:

Donc, apparemment, affichant une réponse plus complète était un aimant downvote donc je vais juste accepter la réponse imcomplete ci-dessus mais laisse cette réponse ici au cas où quelqu'un a besoin réellement. Ne hésitez pas à garder downvoting si elle vous rend heureux si .

4LordRaydenMK @

Cela a fonctionné pour moi: fichier values.xml :

background

Mise à jour : Une citation de http://gmariotti.blogspot.com/2014/11/android-5-tip-about-toolbar-and-style.html .

Avec la nouvelle barre d'outils, vous pouvez appliquer un style et un thème .       Ils sont différents !       Le style est locale à la vue de la barre d'outils, par exemple la couleur de fond .       L'application : thème est la place mondiale à tous les éléments ui gonflés dans la barre d'outils, par exemple la couleur du titre et les icônes .

5Don @

La façon la plus propre que je ai trouvé pour ce faire est de créer un enfant de « ThemeOverlay.AppCompat.Dark.ActionBar ' . Dans l'exemple, je ai mis la couleur de fond de la barre d'outils au rouge et la couleur de texte à BLEU .

<!-- 
    I expected android:colorBackground to be what I was looking for but
    it seems you have to override android:background
-->
<style name="Dark.Overlay" parent="@style/ThemeOverlay.AppCompat.Dark.ActionBar">
    <item name="android:background">?attr/colorPrimary</item>
</style>

<style name="Dark.Overlay.LightPopup" parent="ThemeOverlay.AppCompat.Light">
    <item name="android:background">@color/material_grey_200</item>
</style>

Vous pouvez ensuite appliquer votre thème pour la barre d'outils :

<include android:id="@+id/mytoolbar" layout="@layout/toolbar.xml" />