Android меню
У шаблоні Empty Activity немає меню, тому ми створимо його самі. Це допоможе вам зрозуміти принцип роботи і отримати загальне уявлення про проект. Запам'ятовувати назви класів, методів і код для обробки вибору пунктів меню необов'язково. В інших шаблонах меню буде вбудовано і ви можете відразу використовувати його.
Створіть новий проект на основі Empty Activity і запустіть його. Ніякого меню поки немає.
Створимо кілька строкових ресурсів у файлі res / values / strings.xml. які будуть відповідати за пункти меню:
Тепер створіть нову папку menu в папці res (правий клацання миші на папці res. | New | Directory). Далі створіть у створеній папці файл menu_main.xml - ім'я вказує, що меню відноситься до основної активності MainActivity (правий клацання миші на папці menu | New | Menu Resource File). Якщо ви будете створювати додаток з кількома екранами, то у кожної активності буде окреме меню зі своїми настройками. Поки відкриємо файл menu_main.xml і додамо в отриманий шаблон свій код:
Відкриємо файл MainActivity. Зараз в ньому тільки один метод onCreate (). Додамо новий метод onCreateOptionsMenu (). Саме цей метод відповідає за появу меню у активності. Виберіть в студії меню Code | Override Methods. і в такий вікні починайте вводити назву методу за першими літерами. Можна вводити по першим заголовних букв, тобто ocom (o nC reateO ptionsM enu), щоб швидко знайти потрібний рядок. Натискаємо кнопку OK і отримуємо заготовку.

Додаємо в заготовку метод, який бере дані з ресурсів меню і перетворює їх в пункти меню на екрані.
У методі inflate () ви вказуєте на ресурс меню (R.menu.menu_main) і об'єкт класу Menu.
За англійськи "inflate" перекладається як надувати, тобто за задумом розробників Android, ми як би надуваємо даними об'єкт, наприклад, меню. Але насправді слово "inflate" походить від словосполучення in flat - в квартиру. Існує старовинна традиція запускати в квартиру першим кота, який досліджує всі закутки будинку і заявляє про свою згоду жити в ньому. Так і ми запускаємо дані з XML-файла в об'єкт MenuInflater.
Запустіть проект. Тепер в правій частині заголовка ви побачите значок з трьох точок, збудованих в вертикальну лінію. Натисніть на значок, щоб побачити пункт меню Settings.

Як не важко здогадатися, елемент item відповідає за окремий пункт меню. Додамо ще три пункти за таким же принципом, змінюючи тільки ідентифікатор і текст для меню:
Запустіть проект і спробуйте знову викликати меню. Ви побачите три нові пункти.

Параметри id і title не потребують пояснень. Параметр orderInCategory дозволяє задати своє порядок виведення пунктів меню. Припустимо ви створили п'ять пунктів меню, але поки не визначилися з порядком їх виведення на екрані. Щоб не переміщати постійно цілі блоки коду для пунктів меню в потрібному порядку, можна скористатися даними параметром.
І, нарешті, важливий атрибут app: showAsAction визначає поведінку меню в ActionBar. Значення never означає, що елемент меню не буде подаватись у заголовку, а тільки в спливаючому меню, тобто перебувати за трьома точками. Якщо ви встановите значення always. то пункт Settings відразу з'явиться в заголовку вашого застосування. Також доступні значення ifRooms. withText і collapseActionView. Спробуйте самостійно. Наприклад, ifRoom виводить пункт меню, якщо дозволяє місце. Якщо пунктів буде багато, то вони будуть тільки заважати. Як правило, в такому варіанті виводять дуже коротке слово або значок для частих операцій, щоб уникнути зайвого клацання на три точки.
Поки пункти меню не виконують корисної роботи. Будь-яке натискання на пункт просто закриває меню без видимих наслідків. Ми ще не написали код для обробки натискань.
Вибір пунктів меню
Ми навчилися створювати меню. Але поки воно марно, так як пункти меню ніяк не реагують на наші натискання. Для обробки натискань пунктів меню служить інший метод onOptionsItemSelected (). Додамо метод за таким же принципом, як для попереднього прикладу. Отримаємо заготовку.
Параметр item відповідає за пункт меню. Вам слід отримати ідентифікатор меню через метод getItemId () і вказати для нього код. Так як зазвичай меню складається з декількох пунктів, то зручно використовувати конструкції if / else або switch. Для виведення інформації скористаємося текстової міткою. Додайте на екран активності компонент TextView. Можете використовувати наявний TextView з написом "Hello World!", Тільки надайте йому ідентифікатор.
Додамо код в заготовку для обраного пункту меню:
Відкрийте програму, викличте меню і виберіть будь-який пункт меню. У текстовому полі має з'явитися повідомлення.

Існує альтернативний спосіб через XML, схожий на обробку клацань кнопки (починаючи з Android 3.0). Ви можете додати атрибут android: onClick в ресурсах меню, і вам не потрібно використовувати виклик методу onOptionsItemSelected (). За допомогою android: onClick ви можете вказати потрібний метод при виборі пункту меню. Додайте цю процедуру атрибут до пункту Settings
Тепер в коді активності напишемо наступне:
перемикачі
Зовнішній вигляд пунктів меню можна змінити на вигляд з перемикачами. Для цього потрібно додати елемент group з атрибутом android: checkableBehavior = "single":

Великого сенсу в цьому режимі я не бачу. І розглядати його не будемо.
режим Design
В Android Studio 2.2 додали графічний режим побудови меню яких схожий на панель інструментів для додавання нових компонентів на екран. У меню панель складається з чотирьох елементів: Menu Item. Search Item. Menu. Group.

Принцип той же, вибираєте потрібний елемент і перетаскуєте його на екран в область меню. Якщо ви вивчили ручне створення меню, то цей спосіб не викличе у вас труднощів. З його допомогою можна швидко накидати структуру меню, а потім підправити вручну.
Отже, ви отримали базові навички роботи з меню, достатніх для більшості випадків. Якщо хочете дізнатися більше, то почитайте додаткову інформацію про меню в розділі Теорія.