Ich füge BottomNavigationView
einem Projekt ein hinzu und möchte eine andere Textfarbe (und Symbolfarbe) für die ausgewählte Registerkarte haben (um den Effekt nicht ausgewählter Registerkarten auszublenden). Die Verwendung einer anderen Farbe android:state_selected="true"
in einer Ressourcendatei für die Farbauswahl scheint nicht zu funktionieren. Ich habe auch versucht, zusätzliche Artikeleinträge mit android:state_focused="true"
oder android:state_enabled="true"
leider ohne Wirkung zu haben. Es wurde auch versucht, das state_selected
Attribut für die Standardfarbe (nicht ausgewählt) auf false (explizit) zu setzen, ohne Erfolg.
So füge ich die Ansicht meinem Layout hinzu:
<android.support.design.widget.BottomNavigationView
android:id="@+id/bottom_navigation"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
app:itemBackground="@color/silver"
app:itemIconTint="@color/bnv_tab_item_foreground"
app:itemTextColor="@color/bnv_tab_item_foreground"
app:menu="@menu/bottom_nav_bar_menu" />
Hier ist mein Farbwähler ( bnv_tab_item_foreground.xml
):
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="@android:color/darker_gray" />
<item android:state_selected="true" android:color="@android:color/holo_blue_dark" />
</selector>
Und meine Menüquelle ( bottom_nav_bar_menu.xml
):
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/action_home"
android:icon="@drawable/ic_local_taxi_black_24dp"
android:title="@string/home" />
<item
android:id="@+id/action_rides"
android:icon="@drawable/ic_local_airport_black_24dp"
android:title="@string/rides"/>
<item
android:id="@+id/action_cafes"
android:icon="@drawable/ic_local_cafe_black_24dp"
android:title="@string/cafes"/>
<item
android:id="@+id/action_hotels"
android:icon="@drawable/ic_local_hotel_black_24dp"
android:title="@string/hotels"/>
</menu>
Ich würde mich über jede Hilfe freuen.
quelle
1. In res Ordner mit Namensfarbe erstellen (wie zeichnbar)
2. Klicken Sie mit der rechten Maustaste auf den Farbordner. Wählen Sie new-> color resource file-> create color.xml file (bnv_tab_item_foreground) (Abbildung 1: Dateistruktur )
3. Kopieren Sie bnv_tab_item_foreground und fügen Sie es ein
bnv_tab_item_foreground:
Abbildung 1: Dateistruktur:
quelle
BottomNavigationView
Verwendet colorPrimary aus dem Thema, das für die ausgewählte Registerkarte angewendet wurde, und verwendet esandroid:textColorSecondary
für den Farbton des inaktiven Registerkartensymbols.So können Sie einen Stil mit der bevorzugten Primärfarbe erstellen und ihn als Thema
BottomNavigationView
in einer XML-Layoutdatei festlegen .styles.xml :
your_layout.xml :
quelle
android:textColorSecondary
funktioniert nicht. sollteandroid:colorForeground
stattdessen verwendenandroid:textColorSecondary
bei mir. Vielen Dank!Wenn Sie die Farben von Symbolen und Texten programmgesteuert ändern möchten:
quelle
Es ist zu spät, um zu antworten, könnte aber für jemanden hilfreich sein. Ich habe einen sehr dummen Fehler gemacht. Ich habe eine Auswahldatei mit dem Namen bottom_color_nav.xml zum Auswählen und Deaktivieren der Farbänderung verwendet, die jedoch keine Farbänderung in BottomNavigationView widerspiegelte.
Dann stelle ich fest, dass ich in der onNavigationItemSelected- Methode false zurückgegeben habe . Es wird gut funktionieren, wenn Sie bei dieser Methode true zurückgeben.
quelle
Versuchen Sie es mit ,
android:state_enabled
anstattandroid:state_selected
für die Wähler Artikel Attribute.quelle
Um Satz Textfarbe,
BottomNavigationView
hat zwei Stileigenschaften direkt aus der XML festlegen können:itemTextAppearanceActive
itemTextAppearanceInactive
quelle
Ich verwende ein
com.google.android.material.bottomnavigation.BottomNavigationView
(nicht dasselbe wie OPs) und habe verschiedene der oben vorgeschlagenen Lösungen ausprobiert, aber das einzige, was funktioniert hat, war das Einstellenapp:itemBackground
und die Auswahlapp:itemIconTint
meiner Auswahlfarbe für mich.Meine
color/tab_color.xml
Verwendungandroid:state_checked
und ich verwende auch eine ausgewählte Zustandsfarbe für
color/bottom_navigation_text_color.xml
Hier nicht ganz relevant, aber für volle Transparenz ist mein
BottomNavigationView
Stil wie folgt:quelle
Das wird funktionieren:
quelle
Anstatt einen Selektor zu erstellen, ist dies der beste Weg, um einen Stil zu erstellen.
und um die ausgewählte oder nicht ausgewählte Textgröße zu ändern.
Viel Spaß mit Android!
quelle