как сделать нижнее меню android studio

Android: выдвигающийся экран снизу

Данная статья является переводом статьи Emrullah Luleci, а также её продолжения.

Нижний экран (Здесь и далее под «нижним экраном/слоем» будет подразумеваться элемент bottom sheet — прим. пер.) — компонент, выезжающий снизу экрана, который используется для отображения дополнительного контента. Подробнее об этом элементе можно узнать на официальной сайте посвященном материальному дизайну.

как сделать нижнее меню android studio. Смотреть фото как сделать нижнее меню android studio. Смотреть картинку как сделать нижнее меню android studio. Картинка про как сделать нижнее меню android studio. Фото как сделать нижнее меню android studio

Зависимости

Для использования этого элемента, добавьте последние версии библиотек поддержки в свой проект:

Создайте класс наследник от AppCompatActivity:

Создание макетов

Содержимое нижнего экрана

Для удобства воспользуемся макетами. Назовем файл с нижним слоем bottom_sheet.xml.

behavior_peekHeight: Определяет высоту видимой части.

behavior_hideable: Определяет, может ли нижний экран скрываться свайпом вниз.

Container view

Создайте CoordinatorLayout в качестве корневого вью. Добавьте в него прямым наследником bottom_sheet.xml. Элементы app_bar и activity_bottom_sheet_content не имеют прямого отношения к нижнему экрану, поэтому их можно заменить или удалить.

На данном этапе нижний экран должен работать примерно так:

как сделать нижнее меню android studio. Смотреть фото как сделать нижнее меню android studio. Смотреть картинку как сделать нижнее меню android studio. Картинка про как сделать нижнее меню android studio. Фото как сделать нижнее меню android studio

Динамическое управление

Поведением и свойствами нижнего экрана можно также управлять динамически с помощью Java.

Прикрепление элементов к нижнему экрану

Также можно прикрепить вью к нижнему экрану, чтобы прикрепленный элемент перемещался одновременно с нижним слоем.

как сделать нижнее меню android studio. Смотреть фото как сделать нижнее меню android studio. Смотреть картинку как сделать нижнее меню android studio. Картинка про как сделать нижнее меню android studio. Фото как сделать нижнее меню android studio

Добавим Floating Action Button в макет созданный выше. Новый компонент должен являться непосредственным наследником CoordinatorLayout также как и bottom_sheet. Для прикрепления элемента к нижнему экрану необходимо добавить app:layout_anchor с id вью нижнего экрана, а также app:layout_anchorGravity со значением top|end.

Теперь плавающая кнопка закреплена в верхнем углу нашего нижнего экрана и перемещается вместе с ним.

Скрытие плавающей кнопки при скроле

Для скрытия кнопки при скроле необходимо добавить слушатель к нижнему экрану и отображать/скрывать кнопку. Для начала найдем необходимые вью:

Для скрытия кнопки в момент начала скрола и отображения после полного сворачивания нижнего экрана, используйте следующее:

Результат обоих вариантов можно увидеть ниже:

Источник

Урок 17. Android Navigation. Знакомство с BottomNavigationView. Как добавить фрагменты в панель Bottom Navigation.

На прошлом уроке мы работали с анимацией переходов между экранами. На этом уроке познакомимся с нижней панелью навигации BottomNavigationView, которая позволяет переходить между экранами – пунктами назначения навигации, а также наглядно информирует пользователя о том, на каком экране он находится. Разберемся, как добавить Bottom Navigation в андроид приложение и как добавить в BottomNavigationView новые фрагменты.

Создаем проект

С одной стороны, создать простое приложение с панелью навигации можно, не написав ни одной строчки кода. Достаточно воспользоваться готовым макетом Bottom Navigation Activity на этапе создания проекта в Android Studio. При этом создается проект приложения с нижней панелью навигации BottomNavigationView на главном экране, в которой отображается три пункта. При нажатии каждого из них меняются экраны приложения. Это все хорошо, скажете вы, но если нужно добавить или убрать экраны и пункты для них? Или добавить нижнюю навигацию в существующее приложение?

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

Неоходимые библиотеки

Если открыть файл сборки build.gradle, в секции dependencies можно увидеть подключенные библиотеки из пакета androidx.navigation (с ktx для проектов на kotlin) которые нам уже знакомы по предыдущим урокам на тему навигации в приложении. Если вы добавляете нижнюю навигацию в существующее приложение, то начинать нужно с добавления этих библиотек в ваш проект.

Граф навигации

В папке res есть папка navigation, в которой размещен все тот же граф навигации, его вы помните по предыдущим урокам. Без него, как вы понимаете, не обходится здесь и нижняя панель навигации.

Добавление экранов

Нажмите кнопку New Destination вверху и выберите Create New Destination. На экране добавления фрагментов выберите шаблон Fragment (with ViewModel). Добавьте один за другим два фрагмента – четвертый и пятый экран. Я их так и назову: FourthFragment и FifthFragment.

Вы можете выбрать при добавлении просто Fragment blank. Но связка Fragment + ViewModel предоставляет преимущества сохранения состояния экрана при изменении конфигурации – например, при повороте устройства. Подробнее об этом мы говорили в Уроке 6.

В граф навигации добавилось два фрагмента. Переименуйте их идентификаторы в соответствии с именами других пунктов назначения: navigation_fourth и navigation_fifth. Переименование всегда лучше делать через рефакторинг, нажатием комбинации Shift + F6 – это гарантирует изменение всех возможных связей.

Можно было оставить идентификаторы как было, но более правильно с точки зрения Code Convention, чтобы названия однотипных элементов были логически похожими. Да и находить их будет легче потом.

Также измените значение параметра android:label — оно используется для заголовка экрана. Впишите сюда текст, который вы хотите видеть в заголовке соответствующего экрана, желательно сохранить его затем в строковых ресурсах. Для сохранения нажмите желтую лампочку и выберите пункт «Extract string resourse», а затем придумайте название строки, которая сохранится в файле res/values/strings.xml.

На этом добавление экранов закончено. Но, если запустить приложение сейчас, они не будут отображаться, и нижняя панель навигации никак не изменится. Что ж, идем дальше.

Хост навигации

Если мы откроем папку layout, то увидим макеты всех фрагментов – пунктов назначения, и макет главного активити.

Макет activity_main.xml содержит компонент fragment – это хост навигации, в котором отображаются фрагменты – пункты назначения. Он связан с графом навигации через параметр app:navGraph.

BottomNavigationView

Также здесь присутствует и компонент BottomNavigationView. Это и есть нижняя панель навигации. Компонент BottomNavigationView является частью библиотеки компонентов материального дизайна. Эта библиотека должна быть импортирована в файле сборки модуля:

Обычно она уже есть в проекте по умолчанию.

Рассмотрим компонент BottomNavigationView боле подробно. Он содержит идентификатор nav_view, и имеет значение ширины – 0dp. Это рекомендуемое значение для всех элементов, ширина которых регулируется ограничениями, заданными корневым элементом разметки ConstraintLayout. Мы видим эти ограничения ниже, они привязывают панель к нижней части родителя, который, в свою очередь, занимает весь экран.

Высота BottomNavigationView задана по контенту, но можно установить фиксированную нужного вам размера.

Далее идут два параметра layout_marginStart и layout_marginEnd. Они регламентируют отступ слева и справа, но поскольку значения здесь равны нулю, они ни на что не влияют, и их можно удалить.

Параметр android:background содержит ссылку на атрибут windowBackground и делает фон панели такой же, как фон экрана. Если вы хотите получить цвет панели, такой как на гайдлайнах сайта material.io, то замените параметр android:background=»?android:attr/windowBackground» таким:

Кстати, на сайте material.io можно найти много полезных рекомендаций как по дизайну, так и по реализации компонентов визуального интерфейса. На странице Bottom Navigation, например, указано, что рекомендованное число элементов панели нижней навигации должно быть от трех до пяти. Подписи должны быть максимально короткими и состоять, по возможности, из одного слова.

На вкладе implementation дается пример реализации нижней панели без графа навигации, а также примеры кастомизации и оформления фона и цвета пунктов нижней панели, добавления пунктам бейджей и т.д.

Добавление пунктов меню

Но вернемся к нашему проекту и компоненту BottomNavigationView в макете activity_main.xml.

Нас интересует последний параметр:

Он ссылается на файл bottom_nav_menu.xml в папке res/menu. Этот файл содержит описание пунктов меню нижней панели навигации. Следовательно, добавлять новые пункты следует здесь.

Добавим пару элементов для четвертого и пятого фрагментов. Их идентификаторы должны совпадать с идентификаторами пунктов назначения в графе навигации. Также укажите соответствующие строковые ресурсы в качестве названия пунктов в android:title.

Добаление идентификаторов в контроллер навигации

Осталось добавить идентификаторы пунктов навигации в конфигурацию контроллера навигации в классе MainActivity.

Переменная класса АppBarConfiguration содержит набор идентификаторов пунктов навигации и передается вместе с контроллером – хостом навигации – в функцию setupActionBarWithNavController. Это нужно для того, чтобы система считала каждый из пунктов назначения пунктом верхнего уровня. В противном случае каждый фрагмент будет отображать стрелку возврата назад в тулбаре слева, как это отображается на дочерних активити и фрагментах.

Попробуйте убрать какой-либо из идентификаторов пунктов назначения из набора, переданного в переменную appBarConfiguration, запустите приложение и посмотрите на экран пропущенного пункта назначения, и вы поймете, о чем речь.

Теперь, когда добавление закончено, запустите приложение. Все добавленные пункты меню должны отображаться в нижней панели навигации, и при нажатии вести на соответствующие экраны.

Рефакторинг

Теперь можно навести порядок в проекте. Дело в том, что изначально в проекте фрагменты каждого экрана со своими ViewModel расположены в отдельных папках по имени каждого пункта меню нижней панели навигации, и все это лежит в папке ui. Новые же добавленные фрагменты попали просто в главный пакет. Нужно создать в папке ui новые пакеты по имени добавленных экранов. Затем нужно перенести туда добавленные фрагменты вместе с их привязанными ViewModel. Делается это простым перетаскиванием в дереве проекта, с открытием окна рефакторинга, в котором нужно подтвердить операцию.
Теперь вы знаете, как добавить Bottom Navigation в приложение.

На этом наш урок закончен. Вопросы задавайте в комментариях. Исходный код проекта можно скачать по ссылке.

Источник

Навигация для Android с использованием Navigation Architecture Component: пошаговое руководство

Попробуем, пользуясь официальным руководством и примерами кода, построить работающую систему навигации для будущего многоэкранного приложения в соответствии со стандартами Navigation Architecture Component. Статья включает следующие разделы:

Часть 1. Подготовительные работы
— 1.1. Создание проекта
— 1.2. Зависимости (Dependencies)
— 1.3. Страницы: создание фрагментов
— 1.4. Адреса: файл ресурсов типа «Navigation»
— 1.5. Фрейм: виджет NavHostFragment

Часть 2. Элементы навигации
— 2.1. Навигация с помощью кнопок
— 2.2. Боковое меню (Drawer)
— 2.3. Панель инструментов: Toolbar вместо ActionBar
— 2.4. Нижнее меню (Bottom Navigation)
— 2.5. Всплывающее меню (Overflow Menu)

Краткие выводы и ссылка на github

Часть 1. Подготовительные работы

1.1. Создание проекта

Нам понадобятся базовые знания Котлина, IDE Android Studio версии не ниже 3.3, смартфон или эмулятор с версией API 14 или выше.

Создадим в Android Studio новый проект под названием «Navigation2019».

как сделать нижнее меню android studio. Смотреть фото как сделать нижнее меню android studio. Смотреть картинку как сделать нижнее меню android studio. Картинка про как сделать нижнее меню android studio. Фото как сделать нижнее меню android studio

как сделать нижнее меню android studio. Смотреть фото как сделать нижнее меню android studio. Смотреть картинку как сделать нижнее меню android studio. Картинка про как сделать нижнее меню android studio. Фото как сделать нижнее меню android studio

IDE создаст файл главной активности «MainActivity.kt» и его макет (шаблон) «activity_main.xml».

как сделать нижнее меню android studio. Смотреть фото как сделать нижнее меню android studio. Смотреть картинку как сделать нижнее меню android studio. Картинка про как сделать нижнее меню android studio. Фото как сделать нижнее меню android studio

1.2. Зависимости (Dependencies)

Откроем файл «build.gradle» модуля (не проекта, а именно модуля) и в блок «dependencies» добавим необходимые зависимости:

как сделать нижнее меню android studio. Смотреть фото как сделать нижнее меню android studio. Смотреть картинку как сделать нижнее меню android studio. Картинка про как сделать нижнее меню android studio. Фото как сделать нижнее меню android studio

Мы использовали библиотеки версии 1.0.0, но в будущем ситуация может измениться. Проверить, какие версии библиотек являются актуальными, можно здесь.

1.3. Страницы: создание фрагментов

как сделать нижнее меню android studio. Смотреть фото как сделать нижнее меню android studio. Смотреть картинку как сделать нижнее меню android studio. Картинка про как сделать нижнее меню android studio. Фото как сделать нижнее меню android studio

как сделать нижнее меню android studio. Смотреть фото как сделать нижнее меню android studio. Смотреть картинку как сделать нижнее меню android studio. Картинка про как сделать нижнее меню android studio. Фото как сделать нижнее меню android studio

IDE создаст kt-файл с классом фрагмента и xml-файл с макетом фрагмента. Таким же образом сгенерируем ещё три фрагмента («Fragment2», «Fragment3», «Fragment4»). Мы будем использовать их для создания четырёх разных типов навигации по приложению.

1.4. Адреса: файл ресурсов типа «Navigation»

Кликнув правой кнопкой мыши по папке «res», создадим файл ресурсов типа «Navigation» с названием «routes.xml» («маршруты»).

как сделать нижнее меню android studio. Смотреть фото как сделать нижнее меню android studio. Смотреть картинку как сделать нижнее меню android studio. Картинка про как сделать нижнее меню android studio. Фото как сделать нижнее меню android studio

как сделать нижнее меню android studio. Смотреть фото как сделать нижнее меню android studio. Смотреть картинку как сделать нижнее меню android studio. Картинка про как сделать нижнее меню android studio. Фото как сделать нижнее меню android studio

Откроем созданный файл и с помощью кнопки «New Destination» добавим в навигационную схему наши фрагменты.

как сделать нижнее меню android studio. Смотреть фото как сделать нижнее меню android studio. Смотреть картинку как сделать нижнее меню android studio. Картинка про как сделать нижнее меню android studio. Фото как сделать нижнее меню android studio

как сделать нижнее меню android studio. Смотреть фото как сделать нижнее меню android studio. Смотреть картинку как сделать нижнее меню android studio. Картинка про как сделать нижнее меню android studio. Фото как сделать нижнее меню android studio

«Хватаясь» мышкой за точку в середине правой стороны фрагмента, соединим фрагменты друг с другом так, как они должны быть связаны в приложении.

как сделать нижнее меню android studio. Смотреть фото как сделать нижнее меню android studio. Смотреть картинку как сделать нижнее меню android studio. Картинка про как сделать нижнее меню android studio. Фото как сделать нижнее меню android studio

В соответствии с их названиями, наши фрагменты получат идентификаторы (id) «fragment1», «fragment2», «fragment3», «fragment4». Это «адреса», которые будут использоваться при указании пунктов назначения («destinations») в инструкциях навигационному контроллеру.

Кроме «id», каждый тег «fragment» содержит ещё три параметра: «name», «label» и «layout». Параметры «name» и «layout» нас сейчас не интересуют. Единственное, что стоит отредактировать в файле «routes.xml» — это названия («label») фрагментов. Заменим их на «Фрагмент №1», «Фрагмент №2», «Фрагмент №3» и «Фрагмент №4».

как сделать нижнее меню android studio. Смотреть фото как сделать нижнее меню android studio. Смотреть картинку как сделать нижнее меню android studio. Картинка про как сделать нижнее меню android studio. Фото как сделать нижнее меню android studio

1.5. Фрейм: виджет NavHostFragment

Откроем файл макета «res/layout/activity_main.xml» и удалим текстовый виджет «Hello World!», он нам не понадобится. В палитре (Palette) выберем раздел «Контейнеры» (Containers) и перетащим оттуда на макет активности виджет NavHostFragment (указав наш файл «routes» в качестве источника информации для него). Он выполнит роль фрейма, в котором будут выводиться различные фрагменты приложения.

как сделать нижнее меню android studio. Смотреть фото как сделать нижнее меню android studio. Смотреть картинку как сделать нижнее меню android studio. Картинка про как сделать нижнее меню android studio. Фото как сделать нижнее меню android studio

как сделать нижнее меню android studio. Смотреть фото как сделать нижнее меню android studio. Смотреть картинку как сделать нижнее меню android studio. Картинка про как сделать нижнее меню android studio. Фото как сделать нижнее меню android studio

Изменим id фрагмента на «navFragment». Код макета главной активности будет выглядеть теперь так:

как сделать нижнее меню android studio. Смотреть фото как сделать нижнее меню android studio. Смотреть картинку как сделать нижнее меню android studio. Картинка про как сделать нижнее меню android studio. Фото как сделать нижнее меню android studio

На этом подготовительные работы завершены, теперь можно приступать непосредственно к созданию элементов навигации.

Часть 2. Элементы навигации

2.1. Навигация с помощью кнопок

Откроем макет первого фрагмента («fragment_fragment1.xml»). Удалим ненужный текстовый виджет, изменим тип макета с «FrameLayout» на линейный вертикальный и добавим три кнопки с идентификаторами «button2», «button3», «button4» и соответствующими названиями «Фрагмент 2», «Фрагмент 3», «Фрагмент 4».

как сделать нижнее меню android studio. Смотреть фото как сделать нижнее меню android studio. Смотреть картинку как сделать нижнее меню android studio. Картинка про как сделать нижнее меню android studio. Фото как сделать нижнее меню android studio

В методе «onCreateView» фрагмента получим ссылку на навигационный контроллер (объект «NavController») и запрограммируем поведение при нажатии на кнопки: командой «setOnClickListener» для каждой кнопки создадим слушателя кнопки, который при клике по кнопке будет передавать навигационному контроллеру адрес (id) точки назначения вместе с командой переместиться (navigate) на указанный адрес.

как сделать нижнее меню android studio. Смотреть фото как сделать нижнее меню android studio. Смотреть картинку как сделать нижнее меню android studio. Картинка про как сделать нижнее меню android studio. Фото как сделать нижнее меню android studio

Проверим, как работают наши кнопки.

как сделать нижнее меню android studio. Смотреть фото как сделать нижнее меню android studio. Смотреть картинку как сделать нижнее меню android studio. Картинка про как сделать нижнее меню android studio. Фото как сделать нижнее меню android studio

Одна кнопка — одна строчка кода — и клик по кнопке перемещает нас к указанному фрагменту. Просто, не так ли?

Но без меню не очень удобно, приходится использовать кнопку «Назад» для возвращения на стартовый экран.

2.2. Боковое меню (drawer)

2.2.1. Ресурсный файл меню

В каталоге «res/menu» создадим ресурсный файл меню «drawer_menu.xml». Добавим в него пункты меню, каждый из которых представляет собой тег «item» с параметрами «id» (должен соответствовать таковому в навигационном графе «routes.xml», «title» (заголовок, он может быть другим), «icon» (мы используем одну и ту же картинку для всех пунктов, но, конечно же, они могут быть разными) и др. Наше меню будет выглядеть так:

как сделать нижнее меню android studio. Смотреть фото как сделать нижнее меню android studio. Смотреть картинку как сделать нижнее меню android studio. Картинка про как сделать нижнее меню android studio. Фото как сделать нижнее меню android studio

2.2.2. Шаблон DrawerLayout и виджет NavigationView в макете активности

Откроем файл макета активности «activity_main.xml».

После первого тега (xml version…) добавим начало тега «DrawerLayout».

как сделать нижнее меню android studio. Смотреть фото как сделать нижнее меню android studio. Смотреть картинку как сделать нижнее меню android studio. Картинка про как сделать нижнее меню android studio. Фото как сделать нижнее меню android studio

В конец файла добавим виджет «NavigationView» и окончание тега «DrawerLayout».

как сделать нижнее меню android studio. Смотреть фото как сделать нижнее меню android studio. Смотреть картинку как сделать нижнее меню android studio. Картинка про как сделать нижнее меню android studio. Фото как сделать нижнее меню android studio

2.2.3. Подключение бокового меню в классе активности

Откроем файл «MainActivity.kt» и в методе «onCreate» получим ссылку на «navController» (в активности это выглядит чуть сложнее, чем было во фрагментах).

как сделать нижнее меню android studio. Смотреть фото как сделать нижнее меню android studio. Смотреть картинку как сделать нижнее меню android studio. Картинка про как сделать нижнее меню android studio. Фото как сделать нижнее меню android studio

Затем включим боковое меню:

как сделать нижнее меню android studio. Смотреть фото как сделать нижнее меню android studio. Смотреть картинку как сделать нижнее меню android studio. Картинка про как сделать нижнее меню android studio. Фото как сделать нижнее меню android studio

Код класса теперь выглядит так:

как сделать нижнее меню android studio. Смотреть фото как сделать нижнее меню android studio. Смотреть картинку как сделать нижнее меню android studio. Картинка про как сделать нижнее меню android studio. Фото как сделать нижнее меню android studio

Теперь меню появляется в ответ на свайп от левого края экрана:

как сделать нижнее меню android studio. Смотреть фото как сделать нижнее меню android studio. Смотреть картинку как сделать нижнее меню android studio. Картинка про как сделать нижнее меню android studio. Фото как сделать нижнее меню android studio

Хорошо было бы добавить и кнопку слева-вверху для вызова бокового меню, верно?

2.3. Кнопка и название фрагмента на панели инструментов

Существующий по умолчанию ActionBar, как рекомендует официальное руководство, заменим на Toolbar.

Чтобы отключить существующий ActionBar, в файле «res/values/styles.xml» найдём строку

и заменим «DarkActionBar» на «NoActionBar».

как сделать нижнее меню android studio. Смотреть фото как сделать нижнее меню android studio. Смотреть картинку как сделать нижнее меню android studio. Картинка про как сделать нижнее меню android studio. Фото как сделать нижнее меню android studio

Отлично, ActionBar мы отключили.

как сделать нижнее меню android studio. Смотреть фото как сделать нижнее меню android studio. Смотреть картинку как сделать нижнее меню android studio. Картинка про как сделать нижнее меню android studio. Фото как сделать нижнее меню android studio

Теперь добавим Toolbar. Откроем файл «activity_main.xml», в палитре (Palette) выберем раздел «Контейнеры» (Containers) и перетащим оттуда на макет активности виджет «Toolbar». Панель инструментов добавлена, но она пока пуста.

как сделать нижнее меню android studio. Смотреть фото как сделать нижнее меню android studio. Смотреть картинку как сделать нижнее меню android studio. Картинка про как сделать нижнее меню android studio. Фото как сделать нижнее меню android studio

Переходим в файл активности «MainActivity.kt». Чтобы на Toolbar вывести кнопку и название текущего фрагмента, в метод «onCreate()» добавим следующие строки:

как сделать нижнее меню android studio. Смотреть фото как сделать нижнее меню android studio. Смотреть картинку как сделать нижнее меню android studio. Картинка про как сделать нижнее меню android studio. Фото как сделать нижнее меню android studio

Toolbar теперь выводит название фрагмента и кнопку «Вверх» (Up) для вложенных фрагментов.

как сделать нижнее меню android studio. Смотреть фото как сделать нижнее меню android studio. Смотреть картинку как сделать нижнее меню android studio. Картинка про как сделать нижнее меню android studio. Фото как сделать нижнее меню android studio

Кнопка «вверх» в android’е почему-то обозначается стрелкой «влево»:

как сделать нижнее меню android studio. Смотреть фото как сделать нижнее меню android studio. Смотреть картинку как сделать нижнее меню android studio. Картинка про как сделать нижнее меню android studio. Фото как сделать нижнее меню android studio

Чтобы на стартовом экране приложения выводилась кнопка-гамбургер, нам необходимо в конфигурацию панели инструментов добавить параметр «drawerLayout», который содержит id виджета DrawerLayout из файла «activity_main.xml».

как сделать нижнее меню android studio. Смотреть фото как сделать нижнее меню android studio. Смотреть картинку как сделать нижнее меню android studio. Картинка про как сделать нижнее меню android studio. Фото как сделать нижнее меню android studio

как сделать нижнее меню android studio. Смотреть фото как сделать нижнее меню android studio. Смотреть картинку как сделать нижнее меню android studio. Картинка про как сделать нижнее меню android studio. Фото как сделать нижнее меню android studio

Клик по этой кнопке выводит боковое меню.

как сделать нижнее меню android studio. Смотреть фото как сделать нижнее меню android studio. Смотреть картинку как сделать нижнее меню android studio. Картинка про как сделать нижнее меню android studio. Фото как сделать нижнее меню android studio

2.4. Нижнее меню (Bottom Navigation)

Иногда бывает необходимо акцентировать внимание пользователя на определённых действиях, и эффективно сделать это помогает нижнее меню. Добавим его в третий фрагмент.

Сначала создадим ресурсный файл меню «bottom_nav_menu.xml» с парой ссылок. Затем откроем макет фрагмента №3 (файл «fragment_fragment3.xml») и перетащим на него виджет «BottomNavigationView», попутно согласившись с предложением IDE добавить в dependencies библиотеку «com.android.support:design».

как сделать нижнее меню android studio. Смотреть фото как сделать нижнее меню android studio. Смотреть картинку как сделать нижнее меню android studio. Картинка про как сделать нижнее меню android studio. Фото как сделать нижнее меню android studio

как сделать нижнее меню android studio. Смотреть фото как сделать нижнее меню android studio. Смотреть картинку как сделать нижнее меню android studio. Картинка про как сделать нижнее меню android studio. Фото как сделать нижнее меню android studio

Если бы мы создавали нижнее меню не для одного фрагмента, а сразу для всех, то в метод «onCreate» класса активности (файл «MainActivity.kt») нужно было бы включить следующий код:

как сделать нижнее меню android studio. Смотреть фото как сделать нижнее меню android studio. Смотреть картинку как сделать нижнее меню android studio. Картинка про как сделать нижнее меню android studio. Фото как сделать нижнее меню android studio

Конечно, и виджет «BottomNavigationView» в таком случае надо было бы поместить в макет активности, а не фрагмента.

Но поскольку данное меню нам требуется только во фрагменте №3, то и редактировать мы будем класс фрагмента (файл «Fragment3.kt»), а код будет выглядеть чуть сложнее:

как сделать нижнее меню android studio. Смотреть фото как сделать нижнее меню android studio. Смотреть картинку как сделать нижнее меню android studio. Картинка про как сделать нижнее меню android studio. Фото как сделать нижнее меню android studio

В итоге мы получим нижнее меню, которое будет выводиться только в 3-м фрагменте.

как сделать нижнее меню android studio. Смотреть фото как сделать нижнее меню android studio. Смотреть картинку как сделать нижнее меню android studio. Картинка про как сделать нижнее меню android studio. Фото как сделать нижнее меню android studio

То же самое, но с другими ссылками, сделаем и в 4-м фрагменте.

2.5. Всплывающее меню (Overflow Menu)

Ещё один вид меню — всплывающее меню, которое выводится при клике по кнопке (трём вертикально расположенным точкам) в правом верхнем углу экрана.

как сделать нижнее меню android studio. Смотреть фото как сделать нижнее меню android studio. Смотреть картинку как сделать нижнее меню android studio. Картинка про как сделать нижнее меню android studio. Фото как сделать нижнее меню android studio

Создадим ресурсный файл меню «top_right_menu.xml» с необходимыми ссылками.

В файле «MainActivity» в метод «onCreate» перед «toolBar.setupWithNavController. » добавим строку «setSupportActionBar(toolBar)».

как сделать нижнее меню android studio. Смотреть фото как сделать нижнее меню android studio. Смотреть картинку как сделать нижнее меню android studio. Картинка про как сделать нижнее меню android studio. Фото как сделать нижнее меню android studio

И далее в этом же классе переопределим два метода:

как сделать нижнее меню android studio. Смотреть фото как сделать нижнее меню android studio. Смотреть картинку как сделать нижнее меню android studio. Картинка про как сделать нижнее меню android studio. Фото как сделать нижнее меню android studio

Нажатие на верхнюю правую кнопку теперь отображает всплывающее меню:

как сделать нижнее меню android studio. Смотреть фото как сделать нижнее меню android studio. Смотреть картинку как сделать нижнее меню android studio. Картинка про как сделать нижнее меню android studio. Фото как сделать нижнее меню android studio

Краткие выводы и ссылка на github

Очевидно, что Navigation Architecture Component существенно облегчает труд разработчика. Сложные в прошлом задачи теперь решаются несколькими строчками кода.

Поскольку главной целью данной публикации было осветить базовые алгоритмы создания навигации в android-приложении, многие детали реализации были умышленно оставлены за кадром.

Мой график работы обычно не позволяет поддерживать дискуссии, но Ваши комментарии в любом случае будут полезны для посетителей сайта и потому всегда приветствуются.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *