wake-up-neo.com

Ändern Sie die Farbe des ActionBar-Titeltexts mithilfe des Light.DarkActionBar-Themas in AppCompat 21

Ich verwende die v7 appcompat 21-Bibliothek, um die neuen Materialstile auf Geräten vor Lollipop zu verwenden. Meine styles.xml sieht so aus:

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <item name="Android:textColorPrimary">#ff0000</item>
    <item name="Android:textColorPrimaryInverse">#ff0000</item>
</style>

Ich versuche, die Textfarbe in der Aktionsleiste zu ändern. Aber egal, was ich für textColorPrimary oder textColorPrimaryInverse angegeben habe, die Farbe ist immer weiß. Wenn ich von Theme.AppCompat erbe, kann ich "textColorPrimary" überschreiben, und wenn ich von Theme.AppCompat.Light erbe, kann ich "textColorPrimaryInverse" überschreiben. Beides funktioniert jedoch nicht, wenn das Light.DarkActionBar-Design verwendet wird.

Ich benutze definitiv das AppTheme, weil das Setzen von Attributen wie colorPrimary zum Ändern der Hintergrundfarbe der Aktionsleiste gut funktioniert. Ich verwende keine anderen Stildateien für Ressourcenqualifizierer.

Ich habe die Stildateien für Android=) durchgesehen und kann anscheinend nicht herausfinden, welches Attribut überschrieben werden soll. Ist dies ein Anwendungskompatibilitätsfehler?

55
weiyin

Sie können es mit dem actionBarStyle Attribut des Themas ändern.

<style name="AppBaseTheme" parent="@style/Theme.AppCompat.Light.DarkActionBar">
    <item name="actionBarStyle">@style/MyActionBar</item>
</style>

<style name="MyActionBar" parent="@style/Widget.AppCompat.ActionBar.Solid">
    <item name="titleTextStyle">@style/MyTitleTextStyle</item>
</style>

<style name="MyTitleTextStyle" parent="@style/TextAppearance.AppCompat.Widget.ActionBar.Title">
    <item name="Android:textColor">CHANGE_COLOR_HERE</item>
</style>
161
jimmy0251

Dadurch wird Ihr Symbolleistentitel in der Farbe Weiß angezeigt:

<Android.support.v7.widget.Toolbar
    xmlns:app="http://schemas.Android.com/apk/res-auto"
    Android:id="@+id/toolbar"
    Android:layout_height="wrap_content"
    Android:layout_width="match_parent"
    app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
    Android:minHeight="?attr/actionBarSize"
    Android:background="?attr/colorPrimary" />

Um zu verstehen, was ist der Unterschied zwischen ThemeOverlay.AppCompat.Dark.ActionBar und Theme.AppCompat.Light.DarkActionBar check diese Antwort

Es ist app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" wendet eine helle Farbe an, da die in diesem Thema verwendete Titelfarbe Weiß ist.

25
vovahost

stellen Sie sicher, dass Sie die Änderungen in allen Ihren Werteverzeichnissen vornehmen, z. B. 'values-v11', 'values-v14' usw., falls vorhanden.

Andernfalls stellen Sie sicher, dass in der App dasselbe 'AppTheme' verwendet wird, das Sie oben gezeigt haben.

Bitte senden Sie uns Ihre vollständige style.xml und den Manifest-Code, der auf den Stil verweist, der Ihnen weitere Einblicke in Ihr Problem gibt.

Sie können auch versuchen, Einstellungen vorzunehmen app: Thema und app: popupTheme Attribute auf Ihrer ToolBar.

4
Sreekanth

Versuchen Sie, dies in onCreate Ihrer Aktivität hinzuzufügen. Funktioniert auf fast jeder Android Version.

Für Java Aktivität:

 actionBar.setTitle(Html.fromHtml("<font color='#ffff00'>Your Title</font>"));  

Für Fragmente:

getSupportActionBar().setTitle(Html.fromHtml("<font color='#ffff00'>Your Title</font>"));
3
onexf

Ich habe eine generierte Layout-XML-Datei verwendet und nicht bemerkt, dass das Android:theme Attribut wurde überschrieben.

Hast du deine überprüft? :)

1
DoruChidean