Wie ändere ich die Farbe der icon der ausgewählten Registerkarte TabLayout?
Ich bin mit einem TabLayout
mit einem ViewPager
und ich Frage mich, wie kann ich am effizientesten ändern Sie die Farbe des symbols der ausgewählten Registerkarte in der TabLayout.
Eine perfekte Referenz für die, wie dies umgesetzt wird ist Google ' s Youtube app. Auf der Hauptseite gibt es vier Symbole, die gefärbt sind dunkelgrau. Wenn eine bestimmte Registerkarte ausgewählt ist, wird die Registerkarte Symbol wird weiß.
Ohne Drittanbieter-Bibliotheken, wie kann ich den gleichen Effekt erzielen?
Eine mögliche Lösung ist das wohl mit Selektoren. Aber in diesem Fall würde ich finden beide eine weiße und eine graue version des das-Symbol und wechseln Sie dann das Symbol, wenn die Registerkarte wird aktiviert oder deaktiviert ist. Ich Frage mich, ob es eine effektivere Methode, wo ich kann, markieren Sie das Symbol Farbe aus oder so etwas. Ich habe nicht in der Lage zu finden, diese in jedem tutorial.
BEARBEITEN
Die Lösung, die ich erwähnen direkt oberhalb erfordert die Verwendung von zwei drawables für jede Registerkarte Symbol. Ich Frage mich, ob es einen Weg gibt, dass ich es kann programmgesteuert mit EINE drawable für jede Registerkarte Symbol.
- Bitte verwenden Sie nur
android-studio
tag, wenn Sie spezifisch für die IDE. - did u get die Lösung für dieses problem? Ich bin auch auf der Suche für das gleiche.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Habe ich einen Weg gefunden, dass kann einfach sein.
setCurrentItem(0)
auf Instanz von viewPager von Aktivität, wennonBackButton()
- Methode aufgerufen, und der Benutzer wird immer wieder auf erste fragment, wenn er versucht, zu beenden, aus app.Können Sie eine ColorStateList.
Erstellen Sie zunächst eine xml-Datei (z.B.
/color/tab_icon.xml
), dass sieht so aus und definiert die verschiedenen Farbtöne für die verschiedenen Staaten:Dann fügen Sie diese zu Ihrem code:
Erste, greifen Sie das ColorStateList von Ihrem XML-Code (die Methode ohne Thema ist veraltet, aber notwendig für die pre-Marshmallow-Geräte). Anschließend legen Sie für jede Registerkarte Symbol-es ist TintList der ColorStateList; verwenden DrawableCompat (support library) zur Unterstützung von älteren Versionen als gut.
Das ist es!
tabLayout
) initialisiert wurde.Dafür musst Du anpassen, Registerkarte Symbole mit Selektor-Klasse für die einzelnen Register wie:
Diese kann getan werden, sehr einfach, die vollständig in xml.
Fügen Sie eine Zeile für Ihre TabLayout in Ihrer xml -
app:tabIconTint="@color/your_color_selector"
wie folgt:Erstellen Sie dann eine Farbe-Selektor-Datei (mit der "your_color_selector.xml" oben) in res/color":
Dies setzt Voraus, Sie haben 2 Farben, "selected_color" und "unselected_color" in Ihrem colors.xml Datei.
überprüfen Sie den folgenden code. Passen Sie Ihr Symbol ist eine Farbe, die andere ist keine Farbe.
Warum nutzen Sie nicht-Symbol-Schriftarten (wie font awesome) für Ihre Ikonen? dann ändern Sie die schriftart der Registerkarte text, um Ihre wünschenswert schriftart Symbol .ttf und genießen ändern Sie den ausgewählten text Farbe zu Ihrem tab-icons!
Ich selbst verwendet diese Methode und es ist wirklich schön und sauber 🙂
Erstens, die Titel von Ihrem gewünschten icon-font:
in string.xml:
dann in MainActivity.Java:
Dann ändern Sie die schriftart der Registerkarte Titel auf font-awesome:
und nicht zuletzt in Ihrem Zusammenhang .xml-Datei, legen Sie die Farbe für Ihre tabTextColor und tabSelectedTextColor:
und in colors.xml:
Eine Möglichkeit der "Hervorhebung" das Symbol ist auf die image-anzeigen und einstellen der Farbfilter. Versuchen Sie es mit der setColorFilter(int Farbe) Bildansicht-Methode und Anwendung der Farbe weiß.
Bezug auf die zweite Antwort, die zeigt, wie Farbe getrennt, viele Menschen Fragen sich vielleicht, um, wie zu entfernen die Farbe der das erste Symbol, die beim Wechsel zum nächsten. Was Sie tun können, ist zu gehen, wie diese :
Ich würde kommentiert haben, auf der zweiten Antwort, aber haben nicht genug Reputation für, die! Sorry. Aber Folgen Sie bitte, dass Sie möchten Ihre Zeit sparen und Ihre Kopfschmerzen! Gerne lernen
tabLayout.setOnTabSelectedListener(new TabLayout.ViewPagerOnTabSelectedListener(viewPager) {...}
Wurde als veraltet markiert. Lieber
Überprüfen Sie den folgenden code:
Können Sie ändern die Farbe des Textes der ausgewählten Registerkarte mithilfe des folgenden xml-Attribut Tab-layout :
Anpassen der icon-Farbe der ausgewählten Registerkarte, die Sie verwenden müssen selector
Erstellen Sie eine xml-Datei unter drawable-Ordner:
und fügen Sie diese Auswahl, um die Registerkarte layout-xml das Attribut wie unten:
Können Sie
addOnTabSelectedListener
, es funktioniert für mich.Führen Sie die folgenden Schritte jeweils.
app/src/main/res/values/colors.xml (Hinzufügen colors.xml)
app/src/main/res/color/custom_tab_icon.xml (Erstellen Sie einen Ordner mit dem Namen color im res. Erstellen einer benutzerdefinierten Registerkarte icon.xml in den Ordner.)
app/src/main/res/drawable/ic_action_settings.png (Erstellen)
doppelklicken Sie auf action_settings hinzufügen
Erweitern meine bevorzugte Antwort mit der ColorStateList von hier, können Sie die folgende Lösung, wenn Sie benutzerdefinierte Registerkarten.
Set-up tabs in Ihrer Aktivität xml -
Und benutzerdefinierte Registerkarte layout nav_bar_item.xml
In Ihrer Aktivität
Und fügen Sie diese helper-Funktionen für die Veränderung der Farbe
Schließlich, der Selektor nav_bar_icons_color.xml