Элемент выбранного цвета в android BottomNavigationView

Я ссылаюсь на это. Расписания Активность появляется, когда я нажимаю "Расписания", но всегда выбирается первый цвет элемента ("Избранное"). Он не меняет цвет элемента "Расписание" с цвета элемента "Избранное". А также третий пункт (Музыка). Я использую android: state_checked НЕ android: state_enabled. "При работе с startActivity он не меняет цвет элемента Расписания с цвета элемента Избранное. Если нет, он меняет цвет. Как решить этот цвет выберите проблемы.

activity_main.xml

app:itemIconTint="@drawable/nav_item_color_state"
app:itemTextColor="@drawable/nav_item_color_state"
app:menu="@menu/bottom_navigation_main"

@вытяжка /nav_item_color_state

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:color="@color/white" android:state_enabled="true" />
    <item android:color="@color/colorPrimaryDark" android:state_enabled="false" />
</selector>

Ответ 1

создайте каталог цветов в папке res и создайте свой XML файл для настройки нижних элементов навигации:

Рез/цвет/bottom_nav_color.xml:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
     <item android:state_checked="true" android:color="@color/your_color" />
     <item android:state_checked="false" android:color="@color/your_color"/>
</selector>

и в ваших BottomNavigationView установите значения app:itemTextColor и app:itemIconTint на @color/bottom_nav_color

<android.support.design.widget.BottomNavigationView
   xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:app="http://schemas.android.com/apk/res-auto"
   android:id="@+id/main_navigation"
   android:layout_width="match_parent"
   android:layout_height="wrap_content"
   android:layout_alignParentBottom="true"
   android:background="@color/actionBarColor"
   app:menu="@menu/my_navigation_items"
   app:itemTextColor="@color/bottom_nav_color"
   app:itemIconTint="@color/bottom_nav_color"/>

Ответ 2

вот простое решение вашего вопроса

<android.support.design.widget.TabLayout
....
app:tabBackground="@drawable/tab_color_selector"
...
/>

селектор res/drawable/tab_color_selector.xml:

 <?xml version="1.0" encoding="utf-8"?>
 <selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@color/tab_background_selected" android:state_selected="true"/>
    <item android:drawable="@color/tab_background_unselected" android:state_checked="false"/>
 </selector>

обновить цвет селектора элемента вкладки, что вам требуется.

Ответ 3

Слышали ли вы о проекте-обертке под названием BottomBar of Roughike, который облегчает использование BottomNavigationView? Проект можно найти здесь.

Я предлагаю вам использовать этот проект, который является актуальным и имеет вклад на высоком уровне. Если вы ссылаетесь на это, вы можете просто вставить приведенный ниже код, чтобы изменить цвета при нажатии на вкладках и сделать гораздо больше настраиваемых материалов:

TabLayout tabLayout = (TabLayout) findViewById(R.id.tabLayout);
Tab tab = newTab().setIcon(new BitmapDrawable(getResources(), icon)));
tab.getIcon().setColorFilter(Color.parseColor("#7E7E7E"), PorterDuff.Mode.SRC_IN);

tabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
                          @Override public void onTabSelected(TabLayout.Tab tab) {
                            if (tab != null && tab.getIcon() != null) {
                              tab.getIcon().clearColorFilter();
                              }
                          }
                          @Override public void onTabUnselected(TabLayout.Tab tab) {
                            if (tab != null && tab.getIcon() != null) {
                              tab.getIcon()
                                  .setColorFilter(Color.parseColor("#7E7E7E"),
                                      PorterDuff.Mode.SRC_IN);
                            }
                          }
                          @Override public void onTabReselected(TabLayout.Tab tab) {
                          }
                        });
                      }
                    }
                  });

Итак, в основном, что я здесь делаю, я выделяю невыбранные вкладки на #7E7E7E и очищаю фильтр для раскраски от выбранных, чтобы они отображались с их исходным цветом их значка. Конечно, вы также можете заполнить другим цветом, если это выбрано, что вам нужно.

Надеюсь, это поможет вам!

Приветствия,

RENC