Dodaję BottomNavigationView
do projektu i chciałbym mieć inny kolor tekstu (i odcienia ikon) dla wybranej zakładki (aby uzyskać efekt szarzenia niewybranych zakładek). android:state_selected="true"
Wydaje się, że użycie innego koloru w pliku zasobów selektora kolorów nie działa. Próbowałem też wprowadzić dodatkowe pozycje z efektem android:state_focused="true"
lub android:state_enabled="true"
bez efektu. Próbowałem również ustawić state_selected
atrybut na false (jawnie) dla domyślnego (niewybranego) koloru, bez powodzenia.
Oto jak dodaję widok do mojego układu:
<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" />
Oto mój selektor kolorów ( 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>
I mój zasób 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>
Byłbym wdzięczny za każdą pomoc.
źródło
1. Wewnątrz res utwórz folder z nazwą koloru (jak do rysowania)
2. Kliknij prawym przyciskiem myszy folder kolorów. Wybierz nowy-> plik zasobów koloru-> utwórz plik color.xml (bnv_tab_item_foreground) (Rysunek 1: Struktura pliku)
3. Skopiuj i wklej bnv_tab_item_foreground
bnv_tab_item_foreground:
Rysunek 1: Struktura pliku:
źródło
BottomNavigationView
używa colorPrimary z motywu zastosowanego dla wybranej karty i używaandroid:textColorSecondary
do przyciemnienia ikony nieaktywnej karty.Możesz więc stworzyć styl z preferowanym kolorem podstawowym i ustawić go jako motyw swojego
BottomNavigationView
w pliku układu XML.styles.xml :
your_layout.xml :
źródło
android:textColorSecondary
nie działa. powinien użyćandroid:colorForeground
zamiast tegoandroid:textColorSecondary
mnie też działa. Dzięki!Jeśli chcesz programowo zmienić kolory ikon i tekstów:
źródło
Za późno na odpowiedź, ale może to być pomocne dla kogoś. Robiłem bardzo głupi błąd, używałem pliku selektora o nazwie bottom_color_nav.xml do zmiany koloru Wybierz i odznacz, ale nadal nie odzwierciedlał on żadnej zmiany koloru w BottomNavigationView.
Wtedy zdaję sobie sprawę, że zwracałem false w metodzie onNavigationItemSelected . Będzie działać dobrze, jeśli zwrócisz true w tej metodzie.
źródło
Spróbuj użyć
android:state_enabled
zamiastandroid:state_selected
atrybutów pozycji selektora.źródło
Aby ustawić textColor,
BottomNavigationView
ma dwie właściwości stylu, które możesz ustawić bezpośrednio z xml:itemTextAppearanceActive
itemTextAppearanceInactive
źródło
Używam
com.google.android.material.bottomnavigation.BottomNavigationView
(nie tego samego co OP) i wypróbowałem różne sugerowane rozwiązania powyżej, ale jedyną rzeczą, która działała, było ustawienieapp:itemBackground
iapp:itemIconTint
kolor mojego selektora działał dla mnie.Moje
color/tab_color.xml
zastosowaniaandroid:state_checked
i używam również wybranego koloru stanu dla
color/bottom_navigation_text_color.xml
Nie jest to całkowicie istotne, ale dla pełnej przejrzystości mój
BottomNavigationView
styl jest następujący:źródło
To zadziała:
źródło
Zamiast tworzyć selektor, najlepszy sposób na stworzenie stylu.
i zmienić rozmiar tekstu, zaznaczony lub niewybrany.
Ciesz się Androidem!
źródło