Теперь настроим BottomNavigationView в макете и в классе MainActivity.
Откроем макет activity_main.xml и отредактируем BottomNavigationView. Для начала добавим ресурс меню (нажмите правой кнопкой на папку res и выберите New -> Android Resource File, после чего создайте ресурс меню.
Откройте меню bottom_menu.xml. Меню представляет собой xml-файл с корневым элементом menu. Каждый пункт меню представляет собой элемент item с различными параметрами. Мы создадим три пункта, укажем иконки для каждого пункта (они были предварительно добавлены в папку drawable, а также каждому пункту меню была присвоена текстовая надпись и id.
Обратите внимание на атрибут app:labelVisibilityMode="labeled". Он определяет режим отображения пунктов BottomNavigationView. В этом режиме всегда видны все надписи и иконки для каждого BottomNavigationView. Попробуйте поменять значение атрибута и посмотреть, как будет вести себя BottomNavigationView в том или ином случае.
Следующим шагом мы хотим поменять шрифт для надписей BottomNavigationView. Для этого откроем ресурс themes.xml и добавим туда новый стиль. Предварительно добавим нужный шрифт в проект.
Последний штрих - я хочу, чтобы иконка и надпись активного пункта в BottomNavigationView была желтая, а неактивные пункты меню были красными. Для этого создадим ресурс цвета bottom_colors.xml.
Элемент selector позволяет выбрать один из представленных item по тому или иному условию. В качестве условия выступает атрибут state_checked. То есть, если пункт меню будет иметь состояние checked="true", то будет выбран цвет #fff000 (желтый). Если пункт меню будет находиться в состоянии checked="false", то будет выбран красный цвет.
Далее вернемся в activity_main.xml и укажем в качестве цвета для иконок и текста ресурс bottom_colors.xml.
Проверим работу приложения. Обратите внимание, что листание фрагментов и нажатие на пункты меню никак не синхронизированы - листание не приводит к изменению активного пункта меню, а нажатие на пункт меню не пролистывает фрагмент. Вернемся в класс MainActivity и попробуем синхронизировать эти виджеты.