Estou adicionando um BottomNavigationView
a um projeto e gostaria de ter uma cor de texto (e tonalidade de ícone) diferente para a guia selecionada (para obter o efeito de guias não selecionadas em cinza). O uso de uma cor diferente android:state_selected="true"
em um arquivo de recurso do seletor de cores não parece funcionar. Também tentei ter entradas de itens adicionais com android:state_focused="true"
ou android:state_enabled="true"
, infelizmente, sem efeito. Também tentei definir o state_selected
atributo como false (explicitamente) para a cor padrão (não selecionada), sem sorte.
Aqui está como adiciono a visualização ao meu layout:
<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" />
Aqui está o meu seletor de cores ( 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>
E meu recurso 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>
Eu apreciaria qualquer ajuda.
fonte
1. Dentro res criar pasta com nome da cor (como drawable)
2. Clique com o botão direito na pasta colorida. Selecione novo-> arquivo de recursos de cores-> crie o arquivo color.xml (bnv_tab_item_foreground) (Figura 1: Estrutura do arquivo)
3. Copie e cole bnv_tab_item_foreground
bnv_tab_item_foreground:
Figura 1: Estrutura do arquivo:
fonte
BottomNavigationView
usa colorPrimary do tema aplicado para a guia selecionada e usaandroid:textColorSecondary
para a tonalidade ícone do separador inativo.Assim, você pode criar um estilo com a cor primária preferida e configurá-lo como tema para o seu
BottomNavigationView
em um arquivo de layout xml.styles.xml :
your_layout.xml :
fonte
android:textColorSecondary
não funciona. deve usarandroid:colorForeground
vezandroid:textColorSecondary
funciona para mim. Obrigado!Se você deseja alterar as cores dos ícones e textos por meio de programação:
fonte
É muito tarde para responder, mas pode ser útil para alguém. Eu estava cometendo um erro muito bobo, estava usando um arquivo seletor chamado bottom_color_nav.xml para Selecionar e desmarcar alteração de cor, mas ainda assim não estava refletindo nenhuma alteração de cor no BottomNavigationView.
Então percebo que estava retornando false no método onNavigationItemSelected . Funcionará bem se você retornar verdadeiro neste método.
fonte
Tente usar
android:state_enabled
ao invésandroid:state_selected
dos atributos do item seletor.fonte
Para definir textColor,
BottomNavigationView
possui duas propriedades de estilo que você pode definir diretamente no xml:itemTextAppearanceActive
itemTextAppearanceInactive
fonte
Estou usando um
com.google.android.material.bottomnavigation.BottomNavigationView
(não o mesmo que OP) e tentei várias das soluções sugeridas acima, mas a única coisa que funcionou foi a configuraçãoapp:itemBackground
eapp:itemIconTint
a cor do meu seletor funcionou para mim.Meus
color/tab_color.xml
usosandroid:state_checked
e também estou usando uma cor de estado selecionada para
color/bottom_navigation_text_color.xml
Não é totalmente relevante aqui, mas para total transparência, meu
BottomNavigationView
estilo é o seguinte:fonte
Isso funcionará:
fonte
Em vez de criar o seletor, a melhor maneira de criar um estilo.
e para alterar o tamanho do texto, selecionado ou não selecionado.
Aproveite o Android!
fonte