Элемент выбранного цвета в 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