Option 1) Der schnelle und einfache Weg (nur Symbolleiste)
Seit appcompat-v7-r23 können Sie die folgenden Attribute direkt für Ihren Toolbar
oder seinen Stil verwenden:
app:titleTextColor="@color/primary_text"
app:subtitleTextColor="@color/secondary_text"
Wenn Ihr Mindest-SDK 23 ist und Sie native verwenden, Toolbar
ändern Sie einfach das Namespace-Präfix in android
.
In Java können Sie die folgenden Methoden verwenden:
toolbar.setTitleTextColor(Color.WHITE);
toolbar.setSubtitleTextColor(Color.WHITE);
Diese Methoden verwenden eine Farbe int und keine Farbressourcen-ID!
Option 2) Überschreiben Sie den Stil und die Themenattribute der Symbolleiste
layout / xxx.xml
<android.support.v7.widget.Toolbar
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:minHeight="?attr/actionBarSize"
android:theme="@style/ThemeOverlay.MyApp.ActionBar"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
style="@style/Widget.MyApp.Toolbar.Solid"/>
values / styles.xml
<style name="Widget.MyApp.Toolbar.Solid" parent="Widget.AppCompat.ActionBar">
<item name="android:background">@color/actionbar_color</item>
<item name="android:elevation" tools:ignore="NewApi">4dp</item>
<item name="titleTextAppearance">...</item>
</style>
<style name="ThemeOverlay.MyApp.ActionBar" parent="ThemeOverlay.AppCompat.ActionBar">
<!-- Parent theme sets colorControlNormal to textColorPrimary. -->
<item name="android:textColorPrimary">@color/actionbar_title_text</item>
</style>
Hilfe! Meine Symbole haben auch ihre Farbe geändert!
@PeterKnut hat gemeldet, dass dies die Farbe der Überlaufschaltfläche, der Navigationsschubladenschaltfläche und der Zurückschaltfläche beeinflusst. Es ändert auch die Textfarbe von SearchView
.
Zu den Symbolfarben: Die colorControlNormal
erbt von
android:textColorPrimary
für dunkle Themen (weiß auf schwarz)
android:textColorSecondary
für helle Themen (schwarz auf weiß)
Wenn Sie dies auf das Thema der Aktionsleiste anwenden , können Sie die Symbolfarbe anpassen.
<item name="colorControlNormal">#de000000</item>
In appcompat-v7 bis r23 gab es einen Fehler, bei dem Sie auch das native Gegenstück wie folgt überschreiben mussten:
<item name="android:colorControlNormal" tools:ignore="NewApi">?colorControlNormal</item>
Hilfe! Mein SearchView ist ein Chaos!
Hinweis: Dieser Abschnitt ist möglicherweise veraltet.
Da Sie das Such-Widget verwenden, das aus irgendeinem Grund einen anderen Zurückpfeil (nicht visuell, technisch) als den in appcompat-v7 enthaltenen verwendet, müssen Sie ihn manuell im Thema der App festlegen . Die Drawables der Support-Bibliothek werden korrekt getönt. Sonst wäre es immer weiß.
<item name="homeAsUpIndicator">@drawable/abc_ic_ab_back_mtrl_am_alpha</item>
Was den Text der Suchansicht betrifft ... gibt es keinen einfachen Weg. Nachdem ich die Quelle durchgesehen hatte, fand ich einen Weg, um zur Textansicht zu gelangen. Ich habe dies nicht getestet. Bitte lassen Sie mich in den Kommentaren wissen, ob dies nicht funktioniert hat.
SearchView sv = ...; // get your search view instance in onCreateOptionsMenu
// prefix identifier with "android:" if you're using native SearchView
TextView tv = sv.findViewById(getResources().getIdentifier("id/search_src_text", null, null));
tv.setTextColor(Color.GREEN); // and of course specify your own color
Bonus: Überschreiben Sie die ActionBar-Stil- und Themenattribute
Ein geeignetes Design für eine Standardaktion appcompat-v7-Aktionsleiste würde folgendermaßen aussehen:
<!-- ActionBar vs Toolbar. -->
<style name="Widget.MyApp.ActionBar.Solid" parent="Widget.AppCompat.ActionBar.Solid">
<item name="background">@color/actionbar_color</item> <!-- No prefix. -->
<item name="elevation">4dp</item> <!-- No prefix. -->
<item name="titleTextStyle">...</item> <!-- Style vs appearance. -->
</style>
<style name="Theme.MyApp" parent="Theme.AppCompat">
<item name="actionBarStyle">@style/Widget.MyApp.ActionBar.Solid</item>
<item name="actionBarTheme">@style/ThemeOverlay.MyApp.ActionBar</item>
<item name="actionBarPopupTheme">@style/ThemeOverlay.AppCompat.Light</item>
</style>
ThemeOverlay
und als Thema verwenden , wird auch der Hintergrund jedes untergeordneten Elements farbig.Hier ist meine Lösung, wenn Sie nur die Farbe des Titels und nicht die Farbe des Textes im Such-Widget ändern müssen.
layout / toolbar.xml
Werte / Themen.xml
In ähnlicher Weise können Sie auch subtitleTextAppearance festlegen.
quelle
Wenn Sie API 23 und höher unterstützen, können Sie jetzt das titleTextColor-Attribut verwenden, um die Titelfarbe der Symbolleiste festzulegen .
layout / toolbar.xml
MyActivity.java
quelle
Das Einstellen
app:titleTextColor
meinerandroid.support.v7.widget.Toolbar
Arbeiten für mich unter Android 4.4 und auch unter 6.0 mitcom.android.support:appcompat-v7:23.1.0
:quelle
Das hat mich eine Weile geärgert und ich mochte keine der Antworten, also habe ich mir die Quelle angesehen, um zu sehen, wie es funktioniert.
FractalWrench befindet sich auf dem richtigen Pfad, kann jedoch unter API 23 verwendet werden und muss nicht in der Symbolleiste selbst festgelegt werden.
Wie andere gesagt haben, können Sie mit in der Symbolleiste einen Stil festlegen
und in diesem Stil können Sie die Titeltextfarbe mit einstellen
für Pre-API 23 oder für 23+
Vollständige XML
Hier sind alle Attribute, die für eine Symbolleiste festgelegt werden können
quelle
Einfachste Möglichkeit, die Titelfarbe
Toolbar
mit in zu ändernCollapsingToolbarLayout
.Fügen Sie unten Stile hinzu
CollapsingToolbarLayout
styles.xml
quelle
Wenn Sie die App appcompat-v7 verwenden können : titleTextColor = "# fff">
quelle
Das hat bei mir funktioniert
quelle
Erstellen Sie eine Symbolleiste in Ihrer XML ... toolbar.xml:
Fügen Sie dann Folgendes in Ihre toolbar.xml ein:
Remeber @ color / colorText ist einfach Ihre color.xml-Datei mit dem Farbattribut colorText und Ihrer Farbe. Dies ist der beste Weg, um Ihre Zeichenfolgen aufzurufen, anstatt Ihre Farbe in Ihrer toolbar.xml fest zu codieren. Sie haben auch andere Optionen, um Ihren Text zu ändern, wie zum Beispiel: textAppearance ... etc ... geben Sie einfach app: text ... ein und intelisense gibt Ihnen Optionen in Android Studio.
Ihre endgültige Symbolleiste sollte folgendermaßen aussehen:
NB: Diese Symbolleiste sollte sich in Ihrer activity_main.xml.Easy Peasie befinden
Eine andere Möglichkeit ist, alles in Ihrer Klasse zu erledigen:
Viel Glück
quelle
Zum Ändern der Farbe
/>
quelle
Ich hatte heute ein paar Stunden damit zu kämpfen, weil all diese Antworten jetzt irgendwie veraltet sind, was ich mit MDC und den neuen Themenfunktionen einfach nicht sehen konnte, wie man sie überschreibt
app:titleTextColor
App als Stil .Die Antwort ist, dass
titleTextColor
in der Datei styles.xml verfügbar ist, dass Sie etwas überschreiben, von dem geerbt wirdWidget.AppCompat.Toolbar
. Heute denke ich, dass die beste Wahl sein sollteWidget.MaterialComponents.Toolbar
:Geben Sie in Ihrem App-Design den Symbolleistenstil an:
Jetzt können Sie die XML-Datei, in der Sie die Symbolleiste angeben, unverändert lassen. Lange Zeit dachte ich, dass das Ändern der
android:textColor
Textdarstellung in der Symbolleiste funktionieren sollte, aber aus irgendeinem Grund nicht.quelle
quelle
}}
Oder einfache Verwendung von MainActivity:
style.xml
quelle
Mach es mit
toolbar.setTitleTextAppearance(context, R.style.TitleTextStyle);
// Dies ist ein Stil, in dem Sie Ihr Farbschema anpassen können
quelle
Sehr einfach, das hat bei mir funktioniert (Titel und Symbol weiß):
quelle
Mit der Material Components Library können Sie das
app:titleTextColor
Attribut verwenden.Im Layout können Sie Folgendes verwenden:
Sie können auch einen benutzerdefinierten Stil verwenden :
mit (Erweiterung des
Widget.MaterialComponents.Toolbar.Primary
Stils):oder (Erweiterung des
Widget.MaterialComponents.Toolbar
Stils):Sie können die durch den Stil definierte Farbe auch mithilfe des Attributs (mithilfe des Stils) überschreiben :
android:theme
Widget.MaterialComponents.Toolbar.Primary
mit:
oder (unter Verwendung des
Widget.MaterialComponents.Toolbar
Stils):mit:
quelle