Почти в каждой программе есть меню: три точки в углу экрана, нажав на которые, открывается список действий. Через него делают настройки, открывают справку или выполняют другие полезные команды. Сегодня в Android Studio мы научимся добавлять такое меню в приложение и обрабатывать нажатия. Писать будем на языке Kotlin, а весь урок построен так, чтобы вы легко повторили всё на своём проекте.
Зачем нужно меню и каким оно бывает
Меню экономит место на экране. Вместо того чтобы загромождать интерфейс кнопками, разработчики прячут редко используемые действия в выпадающий список. В Android существует несколько видов меню: самое частое — Options Menu, которое появляется в верхней панели при нажатии на три точки. Есть ещё контекстное меню (по долгому нажатию) и всплывающее, но начинать лучше с самого простого.
Шаг 1: Создаём файл меню
Ресурсы меню хранятся в папке res/menu. Если такой папки ещё нет, создайте её: щёлкните правой кнопкой по res и выберите New → Android Resource Directory, в поле Resource type укажите menu. Затем внутри создайте новый файл с именем main_menu.xml. В нём мы опишем пункты меню.
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/action_settings"
android:title="Настройки" />
<item
android:id="@+id/action_about"
android:title="О программе" />
</menu>
Каждый пункт имеет свой id, чтобы мы могли отличить его в коде, и текст, который увидит пользователь. Позже можно добавить иконки, но сейчас обойдёмся без них.
Шаг 2: Подключаем меню к Activity
Теперь откройте файл MainActivity.kt. Чтобы меню появилось на экране, нужно переопределить метод onCreateOptionsMenu. Внутри мы «надуваем» наш XML-файл с помощью MenuInflater.
override fun onCreateOptionsMenu(menu: Menu?): Boolean {
menuInflater.inflate(R.menu.main_menu, menu)
return true
}
Возвращая true, мы говорим системе, что меню готово к показу. Если вернуть false, меню не появится. Теперь при запуске в правом верхнем углу появятся три точки, а внутри — наши два пункта.
Шаг 3: Обрабатываем выбор пункта
Мало просто показать список — нужно реагировать на касания. Для этого переопределим метод onOptionsItemSelected. Он получает объект MenuItem, у которого можно узнать id и выполнить нужное действие.
override fun onOptionsItemSelected(item: MenuItem): Boolean {
return when (item.itemId) {
R.id.action_settings -> {
Toast.makeText(this, "Открываем настройки", Toast.LENGTH_SHORT).show()
true
}
R.id.action_about -> {
Toast.makeText(this, "Версия 1.0", Toast.LENGTH_SHORT).show()
true
}
else -> super.onOptionsItemSelected(item)
}
}
Здесь при выборе «Настройки» или «О программе» показывается короткое всплывающее сообщение. В реальном приложении вы можете открыть новое Activity, показать диалог или выполнить другое действие.
Шаг 4: Добавляем иконки (бонус)
Если хочется, чтобы у пунктов меню были иконки, добавьте атрибут android:icon в файле main_menu.xml. Например, android:icon="@android:drawable/ic_menu_preferences" для настроек. По умолчанию Android показывает значки только у одного-двух пунктов, но для постоянного отображения иконок можно использовать специальные флаги, но это уже тема для продвинутого урока.
Несколько полезных советов
- Не перегружайте меню. Три-четыре пункта — оптимально. Всё остальное лучше вынести в отдельный экран настроек.
- Используйте понятные названия. «Настройки» и «О программе» — классика. Избегайте длинных фраз, которые не влезут в узкую панель.
- Возвращайте true. Если вы обработали нажатие, обязательно верните
trueизonOptionsItemSelected, иначе система решит, что пункт не обработан, и ничего не произойдёт.
Итог
Сегодня в Android Studio мы освоили добавление меню в приложение. Вы создали XML-файл с пунктами, подключили его к Activity и научились обрабатывать выбор пользователя. Теперь ваша программа может предлагать дополнительные действия, не занимая лишнего места на экране. Попробуйте добавить третий пункт, который, например, очищает текст на экране — это закрепит понимание и сделает меню по-настоящему полезным.