Wie kann ich Stil appcompat - v7 Toolbar wie Theme.AppCompat.Light.DarkActionBar ?

? Liminal @ | Original: StackOverFlow
---

Ich versuche, das Aussehen von Theme.AppCompat.Light.DarkActionBar mit dem neuen Support-Bibliothek Toolbar neu zu erstellen.

Wenn ich wählen Sie Theme.AppCompat.Light meiner Symbolleiste wird leicht sein, und wenn ich wählen Sie Theme.AppCompat wird es dunkel sein. (Technisch gesehen müssen Sie die .NoActionBar Version zu verwenden, aber soweit ich das beurteilen kann ist der einzige Unterschied

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

Jetzt gibt es keine Theme.AppCompat.Light.DarkActionBar aber naiv dachte ich, es wäre gut genug, nur meine eigenen zu machen

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

Doch mit dieser meiner Symbolleisten sind immer noch Light Themen . Ich habe Stunden damit verbracht, nun versucht verschiedene Kombinationen von Mischen der Dunkel (Basis) Thema und das Licht Thema, aber ich kann einfach nicht eine Kombination, gib mir Licht Hintergründe auf alles, aber die Symbolleisten finden.

Gibt es einen Weg, um die AppCompat.Light.DarkActionBar Look mit Import android.support.v7.widget.Toolbar 's ?

---

Top 5 Antwort

1Yong @

Yout kann dies unten probieren .

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

Und die Detailelemente können Sie sie in https://developer.android.com/reference/android/support/v7/appcompat/R.styleable.html#Toolbar finden

Hier sind einige weitere : TextAppearance.Widget.AppCompat.Toolbar.Title, TextAppearance.Widget.AppCompat.Toolbar.Subtitle, Widget.AppCompat.Toolbar.Button.Navigation .

Hoffe, das Ihnen helfen kann.

2oRRs @

Die empfohlene Vorgehensweise, um die Symbolleiste für eine Light.DarkActionBar Klon Stil wäre die Verwendung von Theme.AppCompat.Light.NoActionBar, wie Eltern / app Thema und die Symbolleiste Layout manipulieren.

Die toolbar.xml ich bei jeder Tätigkeit enthalten, ist dies:

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

" : Thema App " und " App: popupTheme " Wenn Sie besondere Aufmerksamkeit zu widmen, werden Sie sehen, wie man das Styling auf Ihre Bedürfnisse leicht anpassen .

Hilfreiche Links für AppCompat v21 allgemein: https://chris.banes.me/2014/10/17/appcompat-v21/

3Liminal @

Ok, nachdem versenkt viel zu viel Zeit in dieses Problem das ist die Art, wie ich es geschafft, das Aussehen Ich hoffte auf zu bekommen. Ich mache es eine separate Antwort, so kann ich alles an einem Ort zu bekommen.

Es ist eine Kombination von Faktoren .

Erstens, versuchen Sie nicht, erhalten die Symbolleisten durch nur Themen spielen schön . Es scheint unmöglich zu sein.

Themen also explizit gelten für Ihre Symbolleisten wie 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" />

Aber das ist die Magie Sauce. Um tatsächlich die Hintergrundfarben ich gehofft hatte, müssen Sie die background Attribut in Ihrem Toolbar Themen überschreiben

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

dann nur enthalten Sie Ihre Werkzeugleistenkonfiguration in Ihrem anderen Layouts

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

und du bist gut zu gehen.

Hoffe, das hilft jemand anderes, so dass Sie nicht haben, um so viel Zeit dafür aufwenden, wie ich .

( wenn jemand herausfinden kann, wie man diese Arbeit zu machen mit nur Themen, dh nicht mit, um die Themen explizit in den Layout-Dateien anwenden werde ich gerne unterstützen ihre Antwort statt )

EDIT:

So offensichtlich der Aufgabe eines vollständigere Antwort war ein downvote Magnet so werde ich nur die unvollständige Antwort zu akzeptieren, sondern über diese Antwort hier lassen, falls jemand wirklich braucht. Fühlen Sie sich frei, um downvoting zu halten, wenn es dich glücklich macht aber.

4LordRaydenMK @

Dieser arbeitete für mich : values.xml Datei :

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

Update: Ein Zitat aus http://gmariotti.blogspot.com/2014/11/android-5-tip-about-toolbar-and-style.html .

Mit der neuen Toolbar können Sie einen Stil und ein Design anwenden .       Sie sind anders !       Der Stil ist vor Ort, um die Symbolleiste anzuzeigen, beispielsweise die Hintergrundfarbe .       Die App: Thema statt global für alle UI-Elemente in der Toolbar aufgeblasen, zum Beispiel die Farbe der Titel und Symbole.

5Don @

Die sauberste Art, wie ich festgestellt, dass dies zu tun ist zu erstellen, ein Kind der " ThemeOverlay.AppCompat.Dark.ActionBar ' . Im Beispiel I der Toolbar Hintergrundfarbe auf ROT und Farbtext zur BLUE .

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

Anschließend können Sie Ihr Thema auf der Symbolleiste :

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