Come faccio stile Toolbar appcompat - v7 come Theme.AppCompat.Light.DarkActionBar ?

? Liminal @ | Original: StackOverFlow

Sto cercando di ricreare il look di Theme.AppCompat.Light.DarkActionBar con la nuova barra degli strumenti libreria di supporto .

Se scelgo Theme.AppCompat.Light toolbar sarà luce e se scelgo Theme.AppCompat sarà buio . ( Tecnicamente è necessario utilizzare la versione .NoActionBar, ma per quanto posso dire l'unica differenza è

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

Ora non c'è Theme.AppCompat.Light.DarkActionBar, ma ingenuamente ho pensato che sarebbe stato abbastanza buono per fare solo il mio

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

Tuttavia, con questo mio barre degli strumenti sono ancora Light a tema . Ho passato ore ora cercando diverse combinazioni di miscelazione della ( base) tema scuro e il tema della luce, ma non riesco proprio a trovare una combinazione che mi permetta di avere sfondi chiari su tutto, ma le barre degli strumenti .

C'è un modo di ottenere il AppCompat.Light.DarkActionBar guardare con import android.support.v7.widget.Toolbar s ' ?



Top 5 Respuesta

1Yong @

Yout può provare questo seguito .

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

E gli elementi di dettaglio che si possono trovare in https://developer.android.com/reference/android/support/v7/appcompat/R.styleable.html#Toolbar

Qui ci sono alcuni più : TextAppearance.Widget.AppCompat.Toolbar.Title, TextAppearance.Widget.AppCompat.Toolbar.Subtitle, Widget.AppCompat.Toolbar.Button.Navigation .

Spero che questo può aiutare .



2oRRs @

Il metodo consigliato per lo stile della barra degli strumenti per un Light.DarkActionBar clone sarebbe quella di usare Theme.AppCompat.Light.NoActionBar, come genitore / app tema e manipolare il layout della barra degli strumenti .

Il toolbar.xml includo in ogni attività è questo :

<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"/>

Se si presta particolare attenzione alle "app : tema " e "app : popupTheme ", vedrete come adattare facilmente lo stile alle vostre esigenze specifiche .

Link utili per AppCompat v21 in generale : https://chris.banes.me/2014/10/17/appcompat-v21/

3Liminal @

Ok, dopo aver affondato modo per molto tempo in questo problema questo è il modo sono riuscito ad ottenere l'aspetto che speravo . Sto facendo una risposta separata in modo da poter ottenere tutto in un unico luogo .

Si tratta di una combinazione di fattori .

In primo luogo, non cercare di ottenere le barre degli strumenti di bel gioco con pochi temi . Sembra impossibile .

Quindi applicare i temi esplicitamente alle barre degli strumenti, come in http://stackoverflow.com/a/26504082/301341

layout / toolbar.xml

<?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" />

Tuttavia questa è la salsa magica . Al fine di ottenere effettivamente i colori di sfondo che speravo si deve ignorare l'attributo background nei vostri temi Toolbar

Valori / styles.xml :

<!-- 
    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>

poi basta includere il layout della barra degli strumenti nelle altre layout

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

e tu sei a posto .

Spero che questo aiuta qualcun altro in modo da non dover spendere così tanto tempo su questo, come ho.

( se qualcuno riesce a capire come fare questo lavoro utilizzando solo i temi, cioè non dover applicare i temi esplicitamente nei file di layout sarò contento di sostenere la loro risposta, invece )

EDIT:

Quindi a quanto pare la pubblicazione una risposta più completa è stata una calamita downvote quindi mi limiterò a accettare la risposta imcomplete sopra, ma lascio questa risposta qui in caso qualcuno ha bisogno in realtà . Sentitevi liberi di mantenere downvoting se ti rende felice comunque.

4LordRaydenMK @

Questo ha funzionato per me : file di values.xml :

<style name="AppBaseTheme" parent="Theme.AppCompat.Light">
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
    <item name="windowActionBar">false</item>
    <item name="theme">@style/ThemeOverlay.AppCompat.Dark.ActionBar</item>
</style>

Aggiornamento : Un preventivo da http://gmariotti.blogspot.com/2014/11/android-5-tip-about-toolbar-and-style.html .

Con la nuova barra degli strumenti è possibile applicare uno stile e un tema .       Sono diversi !       Lo stile è locale alla vista Toolbar, per esempio, il colore di sfondo .       L'applicazione : tema è invece globale per tutti gli elementi dell'interfaccia utente gonfiati nella barra degli strumenti, per esempio il colore del titolo e le icone .

5Don @

Il modo più pulito che ho trovato per fare questo è creare un figlio di ' ThemeOverlay.AppCompat.Dark.ActionBar ' . Nell'esempio, ho impostato il colore di sfondo della barra degli strumenti di RED e il colore del testo in BLU .

<style name="MyToolbar" parent="ThemeOverlay.AppCompat.Dark.ActionBar">
    <item name="android:background">#FF0000</item>
    <item name="android:textColorPrimary">#0000FF</item>
</style>

È quindi possibile applicare il tema per la barra degli strumenti :

<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"
    app:theme="@style/MyToolbar"
    android:minHeight="?attr/actionBarSize"/>