Estoy agregando un BottomNavigationView
a un proyecto, y me gustaría tener un color de texto diferente (y tinte de icono) para la pestaña seleccionada (para lograr el efecto de pestañas no seleccionadas en gris). Usar un color diferente con android:state_selected="true"
un archivo de recursos de selector de color no parece funcionar. También intenté tener entradas de elementos adicionales con android:state_focused="true"
o android:state_enabled="true"
, sin efecto, desafortunadamente. También intenté establecer el state_selected
atributo en falso (explícitamente) para el color predeterminado (no seleccionado), sin suerte.
Así es como agrego la vista a mi diseño:
<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" />
Aquí está mi selector de color ( 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>
Y mi recurso de menú ( 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>
Apreciaría cualquier ayuda.
fuente
1. Dentro de resolución crear carpeta con color de nombre (como dibujable)
2. Haga clic derecho en la carpeta de color. Seleccione nuevo-> archivo de recursos de color-> crear archivo color.xml (bnv_tab_item_foreground) (Figura 1: Estructura del archivo)
3. Copie y pegue bnv_tab_item_foreground
bnv_tab_item_foreground:
Figura 1: Estructura del archivo:
fuente
BottomNavigationView
usa colorPrimary del tema aplicado para la pestaña seleccionada y usaandroid:textColorSecondary
el tinte del icono de pestaña inactiva.Por lo tanto, puede crear un estilo con el color primario preferido y establecerlo como un tema
BottomNavigationView
en un archivo de diseño xml.styles.xml :
your_layout.xml :
fuente
android:textColorSecondary
no funciona. debería usarandroid:colorForeground
en su lugarandroid:textColorSecondary
funciona para mi. ¡Gracias!Si desea cambiar los colores de iconos y textos mediante programación:
fuente
Es demasiado tarde para responder, pero podría ser útil para alguien. Estaba cometiendo un error muy tonto, estaba usando un archivo selector llamado bottom_color_nav.xml para Seleccionar y deseleccionar el cambio de color, pero aún así no reflejaba ningún cambio de color en BottomNavigationView.
Entonces me doy cuenta de que estaba devolviendo false en el método onNavigationItemSelected . Funcionará bien si devuelve verdadero en este método.
fuente
Intente usar en
android:state_enabled
lugar deandroid:state_selected
los atributos del elemento selector.fuente
Para establecer textColor,
BottomNavigationView
tiene dos propiedades de estilo que puede establecer directamente desde el xml:itemTextAppearanceActive
itemTextAppearanceInactive
fuente
Estoy usando un
com.google.android.material.bottomnavigation.BottomNavigationView
(no es lo mismo que OP) y probé una variedad de las soluciones sugeridas anteriormente, pero lo único que funcionó fue la configuraciónapp:itemBackground
yapp:itemIconTint
el color de mi selector funcionó para mí.Mis
color/tab_color.xml
usosandroid:state_checked
y también estoy usando un color de estado seleccionado para
color/bottom_navigation_text_color.xml
No es totalmente relevante aquí pero para una total transparencia, mi
BottomNavigationView
estilo es el siguiente:fuente
Esto funcionará:
fuente
En lugar de crear un selector, la mejor manera de crear un estilo.
y para cambiar el tamaño del texto, seleccionado o no seleccionado.
¡Disfruta de Android!
fuente