Смена иконки при клике на итем в BottomNavigationView
Есть BottomNavigationView с 3 кнопками: домой, корзина и избранное. У них в зависимости от нажатия иконки должны менять цвет (с этого #BCBCBC на этот #000000). Но почему-то при нажатии они становятся белыми и сливаются с фоном
![1][1]](https://i.stack.imgur.com/UONwz.png)
activity_main
<android.support.design.widget.BottomNavigationView
android:id="@+id/bottom_navigation_main"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginEnd="16dp"
android:layout_marginStart="16dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:menu="@menu/bottom_navigation"
app:labelVisibilityMode="unlabeled"/>
navigation_menu
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/nav_bar_home"
android:icon="@drawable/nav_bar_home_selection"
android:title="Home"/>
<item
android:id="@+id/nav_bar_basket"
android:icon="@drawable/nav_bar_basket_selection"
android:title="Basket"/>
<item
android:id="@+id/nav_bar_favorite"
android:icon="@drawable/nav_bar_favorite_selection"
android:title="Favorite"/>
</menu>
selection (для простоты выбрал 1 из 3. В остальных тоже самое прописано)
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/ic_nav_bar_favorite" android:state_checked="false"/>
<item android:drawable="@drawable/ic_nav_bar_favorite_active" android:state_checked="true"/>
</selector>
Пытался играться со значениями true/falseв selection, но ничего не меняется
Ответы (1 шт):
Сразу бросается ошибка в селекторе
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!-- это при нажатом состоянии -->
<item android:drawable="@drawable/ic_nav_bar_favorite_active"
android:state_pressed="true"/>
<!-- это значение по умолчанию + должно быть последним -->
<item android:drawable="@drawable/ic_nav_bar_favorite"/>
</selector>
UPD
Так же в xml, по желанию, в BottomNavigationView или в его стиль добавьте (отменяет Ripple эффект, когда накладывается белый круг)
app:itemRippleColor="@null"
Самая изюминка заключается в том, что BottomNavigationView по умолчанию накладывает на иконки свой tintColor, по этому программно нужно его убрать
(котлин)
bottom_navigation_main.itemIconTintList = null
(java)
bottomNavigationView.setItemIconTintList(null);