43

Ich verwende die v7 appcompat 21-Bibliothek, um die neuen Materialstile auf Pre-Lollipop-Geräten zu verwenden. Mein styles.xml sieht wie folgt aus:Ändern der ActionBar-Titeltextfarbe mithilfe des Light.DarkActionBar-Themas in AppCompat 21

<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 auf der Aktionsleiste zu ändern. Aber egal was ich für textColorPrimary oder textColorPrimaryInverse einstelle, die Farbe ist immer weiß. Wenn ich von Theme.AppCompat erben, kann ich "textColorPrimary" überschreiben, und wenn ich von Theme.AppCompat.Light erben, kann ich "textColorPrimaryInverse" überschreiben. Aber beide funktionieren nicht, wenn Sie das Light.DarkActionBar-Thema verwenden.

Ich benutze definitiv das AppTheme, weil die Einstellung von Attributen wie colorPrimary, um die Actionbar-Hintergrundfarbe zu ändern, gut funktioniert. Ich verwende keine anderen Ressourcenqualifikations-Styles.

Ich habe durch die Androiden-Styles-Dateien gegraben und kann anscheinend nicht herausfinden, welches Attribut überschrieben werden soll. Irgendwelche Ideen? Ist das ein Appcompat-Bug?

Antwort

128

Sie können es von Thema mit actionBarStyle Attribut ä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> 
+0

perfekter Vorschlag, funktioniert gut! – FernandoPaiva

+1

Vielen Dank! Ihre Lösung ist die einzige, die für mich funktioniert hat. –

+23

Aus irgendeinem Grund hat die Einstellung der textColor, wie Sie es getan haben, keine Auswirkungen, wenn Sie auf Android 5 oder Android 4 Gerät (das sind die beiden ich habe es getestet) - irgendwelche Ideen? Ich benutze Toolbar mit AppCompatActivity und verwende über Theme in meinem Manifest. – AgentKnopf

-3

Try this:

<item name="actionMenuTextColor">@color/red</item> 
+0

Dies färbt nur den Text im Überlaufmenü. – Adam

4

sicherstellen, dass Sie die Änderungen in allen Werten Ordner machen, wie 'Werte-v11', 'Werte-v14' etc .. wenn es vorhanden ist.

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

Bitte posten Sie die vollständige style.xml und den Manifest-Code, der auf den Stil verweist, der mehr Einblicke in Ihr Problem gibt.

können Sie auch versuchen App Einstellung: Thema und App: popupTheme Attribute auf Sie ToolBar.

+4

'' funktioniert! – sancho21

+0

Lebensretter! Vielen Dank - ich habe total v * /stile.xml Dateien vergessen ... – tommus

21

Dies wird Ihre Toolbar Titel verwenden weiße Farbe machen:

<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 der Unterschied zwischen ThemeOverlay.AppCompat.Dark.ActionBar und Theme.AppCompat.Light.DarkActionBar Prüfung ist this answer

Es ist app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar", die eine helle Farbe gilt, da der Titel Farbe, die ist in diesem Thema verwendet ist weiß.

+0

Diese Antwort ist nicht sehr genau, was benötigt wird, damit es funktioniert. Welcher Teil ist es, der es weiß macht? Was, wenn jemand es rot machen möchte? Wo ist die App: Präfix definiert? –

+0

@Thibault D. Ich habe meiner Antwort einige Details hinzugefügt. – vovahost

+0

Vielen Dank für Ihre schnelle Antwort, ich werde heute eine Chance geben! –

4

Versuchen Sie, dies im 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>")); 
1

ich verwendet, um eine erzeugte Layout XML-Datei und bemerkte nicht, dass das android:theme Attribut außer Kraft gesetzt wurde.

Haben Sie Ihre überprüft? :)