Ich habe die Farbe der AppCompat-Statusleiste mit actionBarStyle
geändert und einen Stil mit einem Hintergrund erstellt, der der gewünschten Farbe entspricht.
Mit dem Material Design AppCompat funktioniert diese Methode jetzt nicht mehr.
Kannst du mir helfen? Vielen Dank.
Es gibt ein neues Attribut namens colorPrimary
, das Sie in Ihrem Design definieren können. Dadurch erhalten Sie für ActionBar oder Toolbar eine durchgehende Farbe.
Nachfolgend ein kleines Beispiel:
<style name="AppTheme" parent="Theme.AppCompat.Light">
<!-- colorPrimary is used for the default action bar background -->
<item name="colorPrimary">@color/my_action_bar_color</item>
</style>
Bitte beachten Sie: Es muss nur colorPrimary
sein, nicht Android:colorPrimary
, in jedem Werteordner außer dem values-v21
-Ordner.
Weitere Informationen zum Anpassen der Farbpalette finden Sie unter developer.Android.com .
In meinem Fall hatte @reVerse eine teilweise Antwort. Ich musste einige zusätzliche Änderungen vornehmen, um colorPrimary zum Laufen zu bringen, weil ich andere Teile der Symbolleiste anpasste ... insbesondere die Textfarbe.
Hier ist meine Datei "styles.xml" mit Kommentaren, die angibt, was ich falsch gemacht habe:
<!-- As @reVerse mentioned, you need to use colorPrimary instead of Android:colorPrimary -->
<style name="MyTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="colorPrimary">@color/my_toolbar_color</item>
</style>
<!-- I was incorrectly using @style/Theme.AppCompat.Light for the popupTheme attribute -->
<style name="MyToolbarStyle" parent="Widget.AppCompat.ActionBar">
<item name="theme">@style/MyToolbarTextStyle</item>
<item name="popupTheme">@style/ThemeOverlay.AppCompat.Light</item>
</style>
<!-- I was incorrectly using Them.AppCompat.Light for the parent here -->
<style name="MyToolbarTextStyle" parent="ThemeOverlay.AppCompat.Dark.ActionBar">
<item name="Android:textColorPrimary">@color/my_toolbar_text_color</item>
</style>
Wenn Sie also mehr als die Hintergrundfarbe der Symbolleiste anpassen, müssen Sie unbedingt eines der ThemeOverlay-Designs verwenden. Andernfalls wird colorPrimary ignoriert.
Der Vollständigkeit halber sei hier die Layout-Datei angegeben, die ich für meine Symbolleiste Toolbar.xml verwende:
<Android.support.v7.widget.Toolbar
xmlns:Android="http://schemas.Android.com/apk/res/Android"
xmlns:app="http://schmeas.Android.com/apk/res-auto"
style="@style/MyToolbarStyle"
Android:layout_width="match_parent"
Android:layout_height="wrap_content" />
Hoffentlich hilft das jemandem!
Die Anweisungen in der Dokumentation zum Einrichten der App-Leiste empfehlen, das Thema in der Android-Manifest-Datei folgendermaßen einzustellen:
<application
Android:theme="@style/Theme.AppCompat.Light.NoActionBar"
/>
In meiner Erfahrung überschrieb dies jedoch den colorPrimary
-Stil, der für das benutzerdefinierte AppTheme eingerichtet wurde. Was für mich funktionierte, war die Definition eines benutzerdefinierten Designs wie folgt:
<style name="AppTheme" parent="Theme.AppCompat.NoActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
</style>
Und dann, um dieses Thema in der AndroidManifest-Datei zu verwenden.
<application
Android:theme="@style/AppTheme"
/>
Nach dieser Einstellung funktionierte die Hintergrundfarbe der Symbolleiste in der auf colorPrimary
basierenden Aktivität einwandfrei.
<Android.support.v7.widget.Toolbar
Android:id="@+id/my_toolbar"
Android:layout_width="match_parent"
Android:layout_height="?attr/actionBarSize"
Android:background="?attr/colorPrimary"
Android:elevation="4dp"
Android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light" />
(Das Festlegen der ThemeOverlay mit einem dunklen Design stellt sicher, dass der Text hell ist.)
<style name="AppTheme" parent="Theme.AppCompat.Light">
<item name="colorPrimary">@color/ColorPrimary</item>
<item name="colorPrimaryDark">@color/ColorPrimaryDark</item>
<!-- Customize your theme here. -->
</style>
Siehe auch: Benutzerdefinierte Aktionsleiste erstellen