Wie kann ich die Textfarbe der ActionBar ändern? Ich habe das Holo Light-Thema geerbt. Ich kann den Hintergrund der ActionBar ändern, finde aber nicht heraus, welches Attribut zum Ändern der Textfarbe angepasst werden muss.
Ok, ich kann die Textfarbe mit dem Attribut android: textColorPrimary ändern, aber es ändert auch die Textfarbe des Dropdown-Menüs, das angezeigt wird, wenn ein Überlauf auf den ActionBar-Schaltflächen auftritt. Irgendeine Idee, wie man die Farbe dieser Dropdown-Menüs / Listen ändert?
Antworten:
Ok, ich habe einen besseren Weg gefunden. Ich kann jetzt nur die Farbe des Titels ändern. Sie können auch den Untertitel anpassen.
Hier ist meine styles.xml:
quelle
Widget.Holo.Light.ActionBar
for erbenMyTheme.ActionBarStyle
.Ich habe einen Weg gefunden, der mit jedem Geschmack von
ActionBar
( Sherlock , Compat und Native ) gut funktioniert :Verwenden Sie einfach HTML , um den Titel festzulegen und die Textfarbe anzugeben. Um beispielsweise die ActionBar-Textfarbe auf Rot zu setzen, gehen Sie einfach wie folgt vor :
Sie können auch den roten Hex-Code
#FF0000
anstelle des Wortes verwendenred
. Wenn Sie Probleme damit haben, lesen Sie, dass Android Html.fromHtml (String) für <font color = '#'> Text </ font> nicht funktioniert .Wenn Sie eine Farbressource verwenden möchten, kann dieser Code außerdem verwendet werden, um den richtigen HEX-String abzurufen und bei Bedarf das Alpha zu entfernen (das Schriftart- Tag unterstützt kein Alpha):
quelle
red
mit" + color + "
.#FF0000
mit"+color+"
.Ich hatte das gleiche Problem wie Sie, es ist ein Holo.Light-Thema, aber ich wollte die ActionBar-Farbe stylen, daher musste ich auch die Textfarbe sowie Titel und Menüs ändern. Am Ende ging ich zu Git Hub und schaute mir den Quellcode an, bis ich den verdammt richtigen Stil gefunden hatte:
so jetzt alles , was Sie tun müssen, wird auch immer
@color/actionBarText
und@drawable/actionbarbground
Sie wollen!quelle
Die ActionBar-ID ist nicht direkt verfügbar, daher müssen Sie hier ein wenig hacken.
quelle
NullPointerException
auf dieser LinieactionBarTextView.setTextColor(Color.RED);
getIndentifier()
, können Sie zuerst nachsehen(TextView) findViewById(com.actionbarsherlock.R.id.abs__action_bar_title);
(überprüfen Sie, ob es nicht null ist).Toolbar toolbar = findViewById(R.id.toolbar);
in der XML-Layoutdatei von einemcom.google.android.material.appbar.AppBarLayout
Element umgeben ist. Danntoolbar.setTitleTextColor( getResources().getColor( R.color.colorViolet ) );
Es ist ein altes Thema, aber für zukünftige Leser macht die Verwendung von ToolBar alles sehr einfach:
quelle
Ich habe mit einfachen einzeiligen Code getan
quelle
Fügen Sie es dem Stammverzeichnis der Aktionsleiste hinzu. Ich hatte dieses Problem.
actionMenuTextColor - Ändert die Textfarbe für den Text der Aktionsleiste. Es hat nie funktioniert, als es Teil von war
Widget.Styled.ActionBar
, also musste ich es dem Stamm hinzufügen. Andere 2 Attribute ändern Titel und Untertitel einer Aktionsleiste.quelle
Das Festlegen einer HTML-Zeichenfolge in der Aktionsleiste funktioniert nicht für das Material-Design in SDK v21 +
Wenn Sie es ändern möchten, sollten Sie die primäre Textfarbe in Ihrer style.xml festlegen
quelle
Am einfachsten ist es, dies in der Datei styles.xml zu tun.
Die Vorlage styles.xml von Google generiert derzeit Folgendes:
Wenn Sie wie gezeigt eine weitere Zeile vor dem schließenden Tag hinzufügen, ändert sich die Textfarbe so, wie sie mit einer Dark ActionBar sein sollte:
Wenn Sie die Farbe an etwas anderes anpassen möchten, können Sie entweder Ihre eigene Farbe in colours.xml angeben oder sogar eine integrierte Farbe von Android verwenden, indem Sie das Attribut android: textColorPrimary verwenden:
Hinweis: Dadurch werden die Farbe des Titels und auch die Titel aller in der Aktionsleiste angezeigten Menüelemente geändert.
quelle
Wenn Sie den Untertitel auch formatieren möchten, fügen Sie ihn einfach in Ihren benutzerdefinierten Stil ein.
Leute, die das gleiche Ergebnis für die
AppCompat
Bibliothek erzielen wollen, dann habe ich Folgendes verwendet:quelle
<item name="android:titleTextStyle">
und<item name="titleTextStyle">
weil ich die Appcompat-Unterstützungsbibliothek verwendete.Ich habe den Weg gefunden, dies gut zu machen, ohne ein eigenes Layout auf API> = 21 zu erstellen.
Es werden nur Texte eingefärbt und Zeichen in der Aktionsleiste gesteuert.
Hoffe, es wird für jemanden nützlich sein.
quelle
Viele Antworten sind veraltet, daher werde ich den Thread aktualisieren und zeigen, wie Textfarbe und Hintergrundfarbe in ActionBar (Symbolleiste) und im ActionBar-Popup-Menü geändert werden.
Der neueste Ansatz in Android (Stand Mai 2018) bei der Arbeit mit der Aktionsleiste (Symbolleiste) besteht darin, das Thema mit NoActionBar zu verwenden und stattdessen die Symbolleiste zu verwenden.
Also hier ist was du brauchst:
In Aktivität (die AppCompatActivity erweitert) deklarieren Sie die Symbolleiste:
Fügen Sie die Symbolleiste in die Layout-XML der Aktivität ein. Hier werden wir unsere benutzerdefinierten (überschriebenen Themen) festlegen, notieren
android:theme="@style/ThemeOverlay.AppTheme.ActionBar"
undapp:popupTheme="@style/ThemeOverlay.AppTheme.PopupMenu"
sie werden den Trick machen.In Ihrer styles.xml müssen Sie diese beiden Stile überschreiben, um benutzerdefinierte Farben festzulegen:
Das ist es Leute
ps wenn du mich fragst würde ich sagen: JA, diese ganze Themensache ist ein verdammt großes Durcheinander.
quelle
Dies ist die Lösung, die ich verwendet habe, nachdem ich alle Antworten überprüft habe
Ändern Sie die gewünschten Farben, damit es funktioniert
quelle
Diese Funktion funktioniert gut
Um es dann zu benutzen, füttere es einfach mit deiner Aktionsleiste und der neuen Farbe, dh
quelle
Versuchen Sie, dies in onCreate Ihrer Aktivität einzufügen. Funktioniert auf fast jeder Android-Version.
oder
quelle
Probieren Sie viele Methoden aus. In der niedrigen Version der API ist eine praktikable Methode
<item name="actionMenuTextColor">@color/your_color</item>
und verwenden Sie nicht den Android-Namespace. Ich hoffe, Sie können Ihnen helfenps:
quelle
Setzen Sie dies einfach in Ihren Stil ein.
<item name="android:textColorPrimary">@color/yourcolor</item>
quelle
Eine gute Lösung besteht darin, einen SpannableStringBuilder zu verwenden und die Farbe auf diese Weise festzulegen. Sie können sogar verschiedene Farben für verschiedene Teile der Zeichenfolge verwenden, Bilder hinzufügen usw.
Getestet mit der neuen Support-Bibliothek.
Siehe Android: Teil eines Strings mit TextView.setText () färben?
quelle
Dies ist nicht die empfohlene Lösung, da ich hier in Android Apis gehe, aber da meine Anwendung das Thema dynmisch unter Bedingungen ändern muss, die hier nicht möglich sind, muss ich dies tun. Aber diese Lösung funktioniert sehr gut.
Lösung:--
quelle
Für Android 5 (Lollipop) müssen Sie android: actionBarPopupTheme verwenden , um die Textfarbe für das Überlaufmenü festzulegen .
quelle
Der einfachste Weg ist:
Fügen Sie diese beiden Zeilen zu Ihrer Datei styles.xml hinzu
Ersetzen Sie die Farbe durch Ihre Farbe.
quelle
Sie können die Farbe eines beliebigen Textes ändern, indem Sie das HTML-
<font>
Attribut direkt inxml
Dateien verwenden. zum Beispiel instrings.xml
:quelle