J'ajoute un BottomNavigationView
à un projet et j'aimerais avoir une couleur de texte (et d'icône) différente pour l'onglet sélectionné (pour obtenir un effet d'onglets non sélectionnés en grisé). L'utilisation d'une couleur différente android:state_selected="true"
dans un fichier de ressources de sélecteur de couleurs ne semble pas fonctionner. J'ai également essayé d'avoir des entrées d'articles supplémentaires avec android:state_focused="true"
ou android:state_enabled="true"
sans effet malheureusement. J'ai également essayé de définir l' state_selected
attribut sur false (explicitement) pour la couleur par défaut (non sélectionnée), sans succès.
Voici comment j'ajoute la vue à ma mise en page:
<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" />
Voici mon sélecteur de couleur ( 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>
Et ma ressource de menu ( 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>
J'apprécierais toute aide.
la source
1. À l'intérieur de res créer un dossier avec la couleur du nom (comme drawable)
2. Cliquez avec le bouton droit sur le dossier de couleurs. Sélectionnez nouveau-> fichier de ressources de couleur-> créer un fichier color.xml (bnv_tab_item_foreground) (Figure 1: Structure de fichier)
3. Copiez et collez bnv_tab_item_foreground
bnv_tab_item_foreground:
Figure 1: Structure des fichiers:
la source
BottomNavigationView
utilise colorPrimary du thème appliqué pour l'onglet sélectionné et il l' utiliseandroid:textColorSecondary
pour la teinte de l'icône de l'onglet inactif.Ainsi, vous pouvez créer un style avec la couleur primaire préférée et le définir comme thème
BottomNavigationView
dans un fichier de mise en page xml.styles.xml :
your_layout.xml :
la source
android:textColorSecondary
ne fonctionne pas. devrait utiliser à laandroid:colorForeground
placeandroid:textColorSecondary
pour moi. Merci!Si vous souhaitez modifier les couleurs des icônes et des textes par programmation:
la source
Il est trop tard pour répondre, mais cela pourrait être utile pour quelqu'un. Je faisais une erreur très stupide, j'utilisais un fichier de sélection nommé bottom_color_nav.xml pour sélectionner et désélectionner le changement de couleur, mais il ne reflétait toujours aucun changement de couleur dans BottomNavigationView.
Ensuite, je me rends compte, je retournais false dans la méthode onNavigationItemSelected . Cela fonctionnera bien si vous retournez true dans cette méthode.
la source
Essayez d'utiliser
android:state_enabled
plutôt queandroid:state_selected
pour les attributs d'élément de sélection.la source
J'utilise un
com.google.android.material.bottomnavigation.BottomNavigationView
(pas le même que les OP) et j'ai essayé une variété des solutions suggérées ci-dessus, mais la seule chose qui a fonctionné était le réglageapp:itemBackground
etapp:itemIconTint
la couleur de mon sélecteur a fonctionné pour moi.Mes
color/tab_color.xml
utilisationsandroid:state_checked
et j'utilise également une couleur d'état sélectionnée pour
color/bottom_navigation_text_color.xml
Pas totalement pertinent ici mais pour une transparence totale, mon
BottomNavigationView
style est le suivant:la source
Afin de définir textColor,
BottomNavigationView
a deux propriétés de style que vous pouvez définir directement à partir du xml:itemTextAppearanceActive
itemTextAppearanceInactive
la source
Cela fonctionnera:
la source
Au lieu de créer un sélecteur, meilleure façon de créer un style.
et pour changer la taille du texte, sélectionné ou non.
Profitez d'Android!
la source