Всплывающее меню для андроид

PopupMenu — Всплывающее меню

Начиная с Android 3.0, в системе появилась возможность создавать всплывающее меню, привязанное к элементу View. Меню реализовано в виде модального окна, которое отображается снизу от родителя меню или в другом месте, если места снизу недостаточно. PopupMenu не нужно путать с контекстным меню. У них разные задачи, хотя поведение весьма схоже. В новых версиях Android использование всплывающих меню предпочтительнее контекстных, которые можно считать устаревшим интерфейсом.

В Android 4.0 добавили новую функциональность, чтобы работать было проще. В частности, всплывающее меню можно получить из XML-файла, используя метод inflate(int), которому следует передать идентификатор ресурса меню. А до этого приходилось использовать отдельный класс MenuInflator с избыточным кодом.

Также появился слушатель PopupMenu.OnDismissListener для работы с закрытием меню. Он срабатывает либо, когда пользователь щёлкает на пункте меню и меню закрывается, либо пользователь щёлкает в другом месте экрана, и меню также закрывается.

Есть момент, который приводит к конфузу. Сейчас существует два класса с одинаковым именем из двух разных пакетов: android.widget и androidx.appcompat.widget (ещё были android.support.v7.widget.PopupMenu и android.support.v4.widget.PopupMenuCompat). Они практически одинаковы в применении, но в паре моментов поведение отличается.

Например, всплывающее меню из AndroidX может быть прокручиваемым. Когда я щёлкал на изображении, то на экран выводилось только два пункта, и для третьего пункта приходилось прокручивать меню.

Создать всплывающее меню очень просто. По сути мы повторяем шаги по созданию обычного меню. Сначала в ресурсах меню создадим нужный файл:

res/menu/popupmenu.xml

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

Далее добавим на экран активности текстовую метку, кнопку и ImageView. При щелчке на каждом из этих компонентов мы будем выводить одинаковое всплывающее меню:

Осталось написать код.

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

Запустив проект, вы можете щёлкать по любому элементу на форме и увидеть всплывающее меню.

Несмотря на то, что в XML мы указали значки, в реальности они не выводятся. В интернете можно найти примеры решения проблемы через программный код. В Android Q (API 29) можно сделать из коробки (см. пример ниже).

Меню со значками (Kotlin)

Напишем другой вариант примера на Kotlin и заставим систему выводить значки. Будем вызывать меню при нажатии на кнопку и выводить информацию в TextView через новый объект popupMenu2 из пакета android.widget, у которого есть специальный метод setForceShowIcon() для вывода значков на экран. И для сравнения оставим код из предыдущего примера.

Создадим новый файл меню res/menu/popup_menu.xml для второго примера.

Программное добавление пунктов

Повесим на новую кнопку возможность программного добавления новых пунктов меню.

Источник

Всплывающее меню для андроид

Android поддерживает несколько типов меню. Первый — на телефоне есть отдельная кнопка Menu (в старых телефонах), нажатие которой вызывает меню. В новых устройствах отдельную кнопку убрали, заменив на значок меню в виде трёх точек в вертикальной ориентации. Второй тип — контекстное меню, которое появляется при нажатии и удерживания пальца на экране в нужном месте (также можно нажать и удерживать центральную кнопку на телефоне). Контекстное меню в свою очередь может иметь подменю. Сегодня мы познакомимся с первым типом меню. В данной статье будет рассматриваться работа с меню на новых устройствах под управлением Android 4.0 и выше.

Читайте также:  Отключить системные процессы для андроид

В шаблоне 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(). Именно данный метод отвечает за появление меню у активности. Сразу после метода onCreate() начинайте вводить первые символы метода и дальше студия сама покажет список подходящих методов.

Найдите нужный метод и заготовка будет создана автоматически.

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

В методе inflate() вы указываете ресурс меню (R.menu.menu_main) и объект класса Menu.

Запустите проект. Теперь в правой части заголовка вы увидите значок из трёх точек, выстроенных в вертикальную линию. Нажмите на значок, чтобы увидеть пункт меню Settings.

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

Запустите проект и попробуйте снова вызвать меню. Вы увидите три новых пункта.

Параметры id и title не нуждаются в объяснениях. Параметр orderInCategory позволяет задать свой порядок вывода пунктов меню. Предположим вы создали пять пунктов меню, но пока не определились с порядком их вывода на экране. Чтобы не перемещать постоянно целые блоки кода для пунктов меню в нужном порядке, можно воспользоваться данным параметром.

И, наконец, важный атрибут app:showAsAction определяет поведение меню в ActionBar. Значение never означает, что элемент меню не должен выводиться в заголовке, а только в всплывающем меню, т.е. находиться за тремя точками. Если вы установите значение always, то пункт Settings сразу появится в заголовке вашего приложения. Также доступны значения ifRooms, withText и collapseActionView. Попробуйте самостоятельно. Например, ifRoom выводит пункт меню, если позволяет место. Если пунктов будет много, то они будут только мешаться. Как правило, в таком варианте выводят очень короткое слово или значок для частых операций, чтобы избежать лишнего щелчка на три точки.

Обратите внимание на атрибут app:showAsAction, который относится к пространству имён xmlns:app=»http://schemas.android.com/apk/res-auto». Было время, когда такого пространства имён не существовало и в проектах использовался атрибут android:showAsAction из стандартного пространства имён. Если студия будет ругаться на ошибку, то отредактируйте код.

Пока пункты меню не выполняют полезной работы. Любое нажатие на пункт просто закрывает меню без видимых последствий. Мы ещё не написали код для обработки нажатий.

Выбор пунктов меню

Мы научились создавать меню. Но пока оно бесполезно, так как пункты меню никак не реагируют на наши нажатия. Для обработки нажатий пунктов меню служит другой метод onOptionsItemSelected(). Добавим метод по такому же принципу, как для предыдущего примера. Получим заготовку.

Параметр item отвечает за пункт меню. Вам следует получить идентификатор меню через метод getItemId() и указать для него код (в Kotlin вместо метода используется свойство itemId). Так как обычно меню состоит из нескольких пунктов, то удобно использовать конструкцию when. Для вывода информации воспользуемся текстовой меткой. Добавьте на экран активности компонент TextView. Можете использовать имеющийся TextView с надписью «Hello World!», только присвойте ему идентификатор.

Читайте также:  Конвертер pdf word для андроид

Добавим код в заготовку для выбранного пункта меню:

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

Переключатели

Внешний вид пунктов меню можно изменить на вид с переключателями. Для этого нужно добавить элемент group с атрибутом android:checkableBehavior=»single»:

Большого смысла в этом режиме я не вижу. И рассматривать его не будем.

Режим Design

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

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

Итак, вы получили базовые навыки работы с меню, достаточных для большинства случаев. Если хотите узнать больше, то почитайте дополнительную информацию о меню в разделе Теория.

Пример на Java

Код на Java не сильно отличается. Создание элементов меню на XML остаётся без изменений. Осталось только написать кода в классе активности.

Выберите в студии меню Code | Override Methods. и в следующим окне начинайте вводить название метода по первым буквам. Можно вводить по первым заглавным буквам, т.е. ocom (onCreateOptionsMenu), чтобы быстро найти нужную строку. Нажимаем кнопку OK и получаем заготовку.

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

Добавим код в заготовку для выбранного пункта меню:

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

Существует альтернативный способ через XML, похожий на обработку щелчков кнопки (начиная с Android 3.0). Вы можете добавить атрибут android:onClick в ресурсах меню, и вам не нужно использовать вызов метода onOptionsItemSelected(). При помощи android:onClick вы можете указать нужный метод при выборе пункта меню. Добавьте данный атрибут к пункту Settings

Теперь в коде активности напишем следующее:

Источник

Всплывающее меню для андроид

Начиная из версии Android 3.0+ (Honeycomb) в пользовательском интерфейсе платформы Android появилась возможность создавать всплывающее popup меню, которое вызывается при нажатии на какой либо элемент интерфейса, например, кнопку Button. В использовании такого меню есть много плюсов и преимуществ, в основном это удобство вызова нужного меню в нужном месте без привязки ни к стандартному меню приложения, ни к физическим кнопкам устройства, а также popup меню удобно и полезно с целью просто расширить количество доступных пользователю опций и настроек, когда пихать их в стандартное меню уже просто некуда.

Создание всплывающего popup меню на Android довольно просто. Основные шаги его реализации следующие:

— создать само меню в виде xml файла в папке res/menu проекта;

— вызвать popup меню при нажатии на необходимый элемент пользовательского интерфейса;

— задать действия, выполняемые программой при нажатии по пунктам popup меню, с помощью метода onMenuItemClick;

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

Начинаем с создания проекта, выбираем Blank Activity, минимальная версия Android 3.0+. Создадим кнопку для вызова меню. Открываем файл activity_main.xml и добавляем ее:

Теперь создаем файл для нашего popup меню. В папке res/menu создаем файл по имени popup.xml и придаем ему такой вид:

Теперь переходим в файл MainActivity.java. Мы инициализируем здесь нашу Button кнопку, установим для нее слушатель нажатий OnClickListener, при нажатии на кнопку вызываем popup меню, предварительно настроив его вид с файла popup.xml и задав слушатель нажатий по пунктам меню OnMenuItemClickListener, и при нажатии на любой пункт создаем отображение соответствующего Toast сообщения. Полный код MainActivity.java:

Вот и все, всплывающее popup меню успешно создано, осталось только проверить его пригодность. Запускаем приложение и смотрим на результат:

Источник

Что такое всплывающее меню в Android?

В этой статье рассказывается о всплывающих меню в Android. Android Studio используется для создания образца. Всплывающее меню — это тип меню, которое содержит меню и отображает это меню под текстом привязки, если доступно место. Если пространство недоступно, оно отображается над текстом привязки.

Читайте также:  Android pick image from gallery

Что такое всплывающее меню?

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

Как открыть всплывающее меню?

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

Пример всплывающего меню Android

Как использовать всплывающее меню на Android?

Если вы заметили приведенный выше код, мы создали элемент управления с одной кнопкой в ​​файле макета XML, чтобы отображать всплывающее меню, когда мы нажимаем кнопку. В Android, чтобы определить всплывающее меню, нам нужно создать новое меню папки внутри каталога ресурсов нашего проекта (res / menu /) и добавить новый файл XML (popup_menu. Xml) для создания меню.

Что такое всплывающее окно в Android?

android.widget.PopupWindow. Этот класс представляет всплывающее окно, которое можно использовать для отображения произвольного представления. Всплывающее окно представляет собой плавающий контейнер, который появляется поверх текущего действия.

Какое меню называется всплывающим меню?

Контекстное меню (также называемое контекстным, ярлыком и всплывающим или всплывающим меню) — это меню в графическом интерфейсе пользователя (GUI), которое появляется при взаимодействии с пользователем, например при щелчке правой кнопкой мыши.

Каково определение меню?

1a: список блюд, которые можно заказать (как в ресторане) или которые должны быть поданы (как на банкете) b (1): сопоставимый список или ассортимент предложений меню телевизионных программ. (2): список, отображаемый на дисплее компьютера, из которого пользователь может выбрать операцию, которую компьютер должен выполнить.

Что такое дополнительное меню Android?

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

Как открыть всплывающие окна на Android?

Включение или отключение всплывающих окон

  1. На телефоне или планшете Android откройте приложение Chrome.
  2. Справа от адресной строки нажмите «Еще». Настройки.
  3. Коснитесь Настройки сайта. Всплывающие окна и перенаправления.
  4. Включите или отключите всплывающие окна и перенаправления.

Как изменить положение всплывающего меню в Android?

Что такое меню опций Android?

Меню параметров Android — это основные меню Android. Их можно использовать для настроек, поиска, удаления элемента и т. Д. Когда и как этот элемент должен отображаться в качестве элемента действия на панели приложения, определяется атрибутом «Показать действие».

Что такое всплывающее меню на компьютере?

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

Что такое всплывающее меню в VB?

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

Что такое всплывающее окно?

Pop-Up View — это настройка, которая позволяет уменьшить размер любого приложения, проведя пальцем вниз от любого верхнего угла экрана, чтобы вы могли использовать его, когда за ним открыто другое приложение. … Все, что вам нужно сделать, это нажать кнопку «Недавние», выбрать приложение и перетащить его в окно «Открыть во всплывающем окне».

Что такое всплывающие окна в мобильном приложении?

Всплывающие окна, диалоги, те маленькие прямоугольники, которые появляются на вашем экране, как бы вы их ни называли, не следует воспринимать как должное. Хотя они являются относительно «небольшим» элементом вашего приложения, они играют значительную роль, когда дело доходит до взаимодействия с пользователем (UX) вашего приложения.

Какой класс представляет всплывающие сообщения?

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

Источник

Оцените статью