Создание собственных диалогов



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

Чтобы получить корневой объект компоновки, используется класс LayoutInflater.

Этот класс нужен для преобразования XML-компоновки в соответствующие объекты View в коде программы.

Сначала необходимо инициализировать объект LayoutInflater вызовом метода getLayoutInflater(), затем получить корневое представление методом inflate(int, ViewGroup), где первый параметр — идентификатор ресурса схемы размещения, второй — идентификатор корневого представления компоновки:

LayoutInflater inflater = getLayoutInflater(); View layout = inflater.inflate(R.layout.custom_layout,

(ViewGroup)findViewById(R.id.toast_layout));

Получив корневое представление, можно методом findViewById() инициализировать все дочерние представления в компоновке и задать для них информационное наполнение.

Далее создается объект AlertDialog.Builder и методом setView() для него устанавливается полученная ранее компоновка:

AlertDialog.Builder builder = new AlertDialog.Builder(this);

builder.setView(layout);

Остальная инициализация свойств диалога и работа с ним в коде программы аналогична работе со стандартным AlertDialog.

 

13. Типы меню, создание меню.

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

Android предлагает три базовых типа прикладных меню:

r Options Menu (Меню выбора опций) — набор пунктов меню, прикрепляемый к Activity. Меню появляется внизу экрана при нажатии клавиши <MENU> на мобильном устройстве. Для меню выбора опций дополнительно существует еще две разновидности меню:

Icon Menu (Меню со значками) — расширение меню выбора опций, добавляющее значки к тексту в пункты меню. Меню может содержать максимум шесть пунктов. Этот тип меню — единственный, который поддерживает значки;

Expanded Menu (Расширенное меню) — вертикальный выпадающий список пунктов меню. Расширенное меню появляется при наличии более шести пунктов меню. При этом в меню выбора опций появляется дополнительный пункт More. Расширенное меню добавляется автоматически системой Android. При нажатии пункта Moreпоказывается расширенное меню со списком пунктов, которые не поместились в основной части меню выбора опций;

r Context Menu (Контекстное меню) — всплывающий список пунктов меню, которое появляется при касании сенсорного экрана в течение двух и более секунд (событие long-press);

r Submenu (Подменю) — всплывающий список пунктов меню, который привязан к конкретному пункту в меню выбора опций или в контекстном меню. Пункты подменю не поддерживают вложенные подменю.

 

Меню выбора опций

Меню выбора опций — наиболее распространенный тип меню в приложениях. Меню, как уже говорилось ранее, открывается при нажатии на мобильном устройстве клавиши <MENU>.

Когда это меню открывается впервые, система Android вызывает метод onCreateOptionsMenu(), передавая в качестве параметра объект Menu. Этот метод необходимо реализовать в классе Activity, где происходит вызов меню, и создать информационное наполнение для объекта Menu. Меню можно определить в XML-

файле или использовать метод add() для последовательного присоединения каждого пункта меню,

Метод add(), используемый в этом примере, принимает четыре параметра:

r идентификатор группы — позволяет связывать этот пункт меню с группойдругих пунктов этого меню

r идентификатор пункта для обработчика события выбора пункта меню (опреде-

ляется в коде заранее);

r порядок расположения пункта в меню — позволяет определять позицию пунктав меню. По умолчанию (значение Menu.NONE или 0) они будут отображены в соответствии с последовательностью добавления в коде;

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

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

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

При выборе пункта меню пользователем будет вызван метод onOptionsItemSelected(), который необходимо определить в классе, реализующем Activity. Этот метод обратного вызова передает в программу объект MenuItem — пункт меню, который был выбран пользователем. Идентифицировать выбранный пункт меню можно методом getItemId(), который возвращает целое число, являющееся идентификатором пункта меню, который был назначен ему в методе add() при создании меню в onCreateOptionsMenu(). После идентификации пункта меню можно написать код, реализующий обработку события выбора меню.

 

Для меню также возможно добавить "горячие" клавиши (или сочетания клавиш) для быстрого доступа, используя символы клавиатуры. Для добавления "горячих" клавиш в меню существует несколько методов:

r setAlphabeticShortcut(char) — добавляет символ;

r setNumericShortcut(int) — добавляет число;

r setShortcut(char, int) — добавляет комбинацию символа и числа.

Например:

setAlphabeticShortcut('q');

Теперь при открытии меню (или при удерживании клавиши <MENU>) нажатие клавиши <q> выберет этот пункт меню. Эта быстрая клавиша (или сочетание клавиш) будет показана как подсказка, отображающаяся ниже имени пункта меню.

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

В меню можно также отображать значки для каждого пункта. Значки добавляются методом setIcon() при создании меню.

Расширенное меню

Расширенное меню, как уже было сказано, появляется при количестве пунктов меню больше шести. Это меню добавляется автоматически системой Android при отображении меню на экране.

Контекстное меню

Контекстное меню в Android напоминает контекстное меню в настольных системах, появляющееся при нажатии правой кнопки мыши. Меню вызывается при нажатии на объект в течение двух секунд (событие long-press).

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

Для создания контекстного меню необходимо реализовать в классе Activity метод обратного вызова меню onCreateContextMenu(). В методе onCreateContextMenu() можно добавить пункты меню, используя один из методов add() и метод обратного вызова onContextItemSelected().

При выборе пользователем пункта меню будет вызван метод onContextItemSelected(), который необходимо определить в классе, реализующем Activity. Этот метод пере- дает в программу объект MenuItem — пункт меню, который был выбран пользователем.

Подменю

Подменю можно добавить в любое меню, кроме другого подменю. Они очень полезны, когда приложение имеет много функций, которые должны быть организованы в разделы подобно пунктам в главном меню приложений для настольных систем (File, Edit, Viewи т. д.).

Подменю создается в методе обратного вызова onCreateOptionsMenu(), определяемого в классе Activity. Подменю добавляется для уже существующего пункта меню с помощью метода addSubMenu(), который возвращает объект SubMenu. В объект SubMenu можно добавить дополнительные пункты к этому меню, используя метод add().


Дата добавления: 2018-06-27; просмотров: 244; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!