Ich versuche, das Aussehen Theme.AppCompat.Light.DarkActionBar
mit der neuen Symbolleiste der Support-Bibliothek wiederherzustellen.
Wenn ich mich entscheide, ist Theme.AppCompat.Light
meine Symbolleiste hell und wenn ich mich entscheide, ist Theme.AppCompat
sie dunkel. (Technisch muss man die .NoActionBar
Version 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, um nur meine eigenen zu machen
<style name="Theme.AppCompat.Light.DarkActionBar.NoActionBar">
<item name="windowActionBar">false</item>
<item name="android:windowNoTitle">true</item>
</style>
Damit sind meine Symbolleisten jedoch immer noch Light
thematisiert. Ich habe jetzt Stunden damit verbracht, verschiedene Kombinationen des Mischens des dunklen (Basis-) Themas und des hellen Themas auszuprobieren, aber ich kann einfach keine Kombination finden, mit der ich auf allen außer den Symbolleisten helle Hintergründe habe.
Gibt es eine Möglichkeit, das AppCompat.Light.DarkActionBar
Aussehen mit Importen android.support.v7.widget.Toolbar
zu erhalten?
ThemeOverlay.AppCompat.ActionBar
scheint es nicht so gut zu funktionieren. Scheint nicht so, als würde sich das System um das<item name="android:colorBackground">@color/background_material_dark</item>
In kümmernBase.ThemeOverlay.AppCompat.Dark
. Aber ich werde weiter graben. (Und ich habe diese Seite gelesen. Das war einer meiner Ausgangspunkte. Scheint immer noch nicht zu funktionieren.)android:background="?attr/colorPrimary"
in der Symbolleiste und<item name="colorPrimary">@color/background_material_dark</item>
in meinem Stil, sodass die primäre App-Farbe automatisch angepasst wird.Bearbeiten: Nach dem Update auf appcompat-v7: 22.1.1 und der Verwendung
AppCompatActivity
anstelleActionBarActivity
meiner styles.xml sieht es so aus:Hinweis: Dies bedeutet, dass ich eine
Toolbar
vom Framework bereitgestellte (NICHT in einer XML-Datei enthalten) verwende.Das hat bei mir
funktioniert : styles.xml file:
Update: Ein Zitat aus Gabriele Mariottis Blog .
quelle
Ok, nachdem ich viel zu viel Zeit in dieses Problem gesteckt hatte, gelang es mir auf diese Weise, das Aussehen zu erreichen, auf das ich gehofft hatte. Ich mache eine separate Antwort, damit ich alles an einem Ort bekommen kann.
Es ist eine Kombination von Faktoren.
Versuchen Sie zunächst nicht, die Symbolleisten nur durch Themen zu spielen. Es scheint unmöglich zu sein.
Wenden Sie also Themen explizit auf Ihre Symbolleisten an, wie in der Antwort von oRRs
layout / toolbar.xml
Dies ist jedoch die magische Sauce. Um die Hintergrundfarben zu erhalten, die ich mir erhofft hatte, müssen Sie das
background
Attribut in Ihren Symbolleisten-Designs überschreibenvalues / styles.xml:
Fügen Sie dann einfach Ihr Symbolleistenlayout in Ihre anderen Layouts ein
und du bist gut zu gehen.
Ich hoffe, das hilft jemand anderem, damit Sie nicht so viel Zeit damit verbringen müssen wie ich.
(Wenn jemand herausfinden kann, wie dies funktioniert, indem er nur Themen verwendet, dh die Themen nicht explizit in den Layoutdateien anwenden muss, unterstütze ich stattdessen gerne ihre Antwort)
BEARBEITEN:
Das Veröffentlichen einer vollständigeren Antwort war also anscheinend ein Magnet für die Ablehnung, daher akzeptiere ich einfach die unvollständige Antwort oben, lasse diese Antwort jedoch hier, falls jemand sie tatsächlich benötigt. Fühlen Sie sich frei, weiter abzustimmen, wenn es Sie glücklich macht.
quelle
<item name="colorPrimary">@color/colorPrimary</item>
Dann kann ich dasandroid:background="?attr/colorPrimary"
Attribut in meinem Symbolleisten-Widget verwenden.@android:color/transparent
, vermeiden Sie das Problem, wenn Sie lange auf einen Menüpunkt drücken / klicken. Um den Text befindet sich ein Feld. Dies ist auch zukunftssicher, wenn sich die helle Hintergrundfarbe in Zukunft ändert.Der sauberste Weg, dies zu tun, besteht darin, ein untergeordnetes Element von ' ThemeOverlay.AppCompat.Dark.ActionBar ' zu erstellen . Im Beispiel habe ich die Hintergrundfarbe der Symbolleiste auf ROT und die Textfarbe auf BLAU gesetzt.
Sie können Ihr Thema dann auf die Symbolleiste anwenden:
quelle
Um Werkzeugleiste Stil anpassen, erstellen erste Werkzeugleiste benutzerdefinierten Stil vererben Widget.AppCompat.Toolbar, überschreiben Eigenschaften und fügen Sie es dann , um benutzerdefinierte App Thema , wie unten dargestellt, siehe http://www.zoftino.com/android-toolbar-tutorial für Weitere Informationen Symbolleiste und Stile.
quelle
Sie können dies unten versuchen.
Die Detailelemente finden Sie unter https://developer.android.com/reference/android/support/v7/appcompat/R.styleable.html#Toolbar
Hier sind einige weitere:
TextAppearance.Widget.AppCompat.Toolbar.Title
,TextAppearance.Widget.AppCompat.Toolbar.Subtitle
,Widget.AppCompat.Toolbar.Button.Navigation
.Hoffe das kann dir helfen.
quelle
Ähnlich wie bei Arnav Rao, jedoch mit einem anderen Elternteil:
Bei diesem Ansatz wird das Erscheinungsbild der Symbolleiste vollständig in den App-Stilen definiert, sodass Sie nicht auf jeder Symbolleiste ein Styling platzieren müssen.
quelle
android:toolbarStyle
ist API 21+ fürandroid.widget.Toolbar
.toolbarStyle
ist AppCompat fürandroid.support.v7.widget.Toolbar
.MyToolbar
Stil sollteWidget.AppCompat.Toolbar
kein Thema erweitern.