ПредишенСледващото

опции на менюто за избор (Меню с опции)

За менюто отговаря android.view.Menu клас. Всяка дейност е свързана с едно меню обект. Менюто съдържа елементи от менюто (android.view.MenuItem клас) и подменю (android.view.SubMenu клас).

Когато менюто се отваря за първи път, Android е метод onCreateOptionsMenu (). преминаване като обект параметър меню. Меню, можете да създадете ресурс в XML-файл или да използвате метода на добавката ().

В стандартния дизайн при избора на конвенционален шаблон вече имаме един празен за менюто от един Настройки запетая, и метод за повикване на менюто (вече знаете за него).

Създаване на меню с ресурсите

Помислете за работа с менюто чрез средствата. ресурси, които трябва да се съхраняват в XML файл, използвани за създаване на меню. Файлът трябва да бъде себе си в RES / меню / папка на вашия проект. Менюто се състои от следните елементи:

Определя менюто, което съдържа елементи от менюто. елемент Тя трябва да бъде корен елемент от конструкцията на XML-файл и може да съдържа един или повече елементи и Той създава елементите на менюто директно. Този елемент може да има вложени за създаване на подменю Можете да използвате и невидим контейнерни елементи по желание . Това дава възможност за постигане на определени резултати,

Да предположим, че ние решихме да използваме менютата за някои игри. Създаване на нов файл game_menu.xml:

Ние сме създали меню с две позиции. Всеки артикул включва следните характеристики:

Android: идентификатор ID на елемента от менюто, когато заявлението може да открие разпределението на опцията в менюто на потребителя Android: заглавие текст да се показва в менюто

Има и други атрибути за позиция ". като андроид: икона = "@ изтегляемото / дом" също ще се появи иконата за опцията в менюто, както и Android: включен = "фалшива" ви позволява да направите опцията в менюто недостъпна.

Умение андроид: titleCondensed се прилага в случай, че един обикновен позиция е твърде широко и не "подходящи" в избрания елемент от менюто.

Умение андроид: orderInCategory определя реда, в който се показват елементи от менюто MenuItems.

При създаването на менюто, ние посочи ресурси низови @ низ / new_game и @ низ / помощ. Трябва да се добавят нови редове, за да файл strings.xml:

Сега трябва да се направят промени в дейността на класна стая, в която ще се появи в менюто. Програмата трябва да преобразуваме създаден ресурс на менюто в обекта на програмата. За тази цел има специален метод MenuInflater.inflate (). който се прилага в специален метод на обаждане onCreateOptionsMenu (). Този метод е предназначен да се покаже менюто с натискане на бутона за менюто на устройството:

След като поставите среда за разработка под код ще поиска да внася липсващата пространство от имена.

onCreateOptionsMenu метод () метод инициира първата поява на меню на екрана и да приема като параметър сайтове МЕНЮ (за по-стари устройства). Можете да запишете линк към менюто и да го стартирате от всякъде, докато методът onCreateOptionsMenu () няма да се нарича отново. Винаги трябва да използвате за изпълнение на манипулатора на родителския клас, защото това автоматично включва допълнителни системни опции в менюто, ако е необходимо. Новият метод на устройството се нарича, когато дейността. Методът трябва да се върне на стойност истина. меню, за да се виждат на екрана.

Изпълнението на програмата, натиснете бутона за менюто на емулатора, за да видите създаде меню.

меню Android

getMenuInflater () метод връща например на MenuInflater клас. която ние използваме за четене на данни от меню XML.

Както можете да видите, се появява менюто в долната част на екрана. Резултатите могат да бъдат показани едновременно на екрана шест позиции от менюто. Ако точките по-горе, ще бъдат показани пет точки плюс една шеста Още. който ви позволява да видите и другите елементи. Нека да проверим и да добавите нови елементи от менюто.

На първо място, добави шест точки.

меню Android

Нека добавим още един елемент от менюто, за да ги е седем.

меню Android

Избирате точки от менютата

Научихме как да създадете меню. Но докато тя е безполезна, тъй като елементите на менюто не отговарят на кранчетата. onOptionsItemSelected метод () се използва за обработка надолу елементите от менюто. Методът определя елемента избран от потребителя чрез MENUITEM. Сега можем да се идентифицират на избрания елемент, като се обадите getItemId (). която връща идентификатора на точката от менюто. Освен това, чрез отчета за превключване трябва да се дефинират команди:

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

меню Android

В този пример, getItemId () пита за ID на избрания елемент от менюто и започва да се сравни в отчета за избор на прекъсвач с идентификатор, който сме си поставили в XML-ресурси. При откриване на правилния идентификатор манипулатор се извършва за даден елемент. Ако програмата не намери нищо, а след това оператора по подразбиране. която връща супер класа.

В Android 3.0, можете да добавите атрибут андроид: ресурси OnClick на менюто, и няма да се наложи да използвате onOptionsItemSelected (). С помощта на Android: OnClick, можете да посочите желания метод при избора на елемент от менюто.

Софтуер меню създаване

Помислете за създаването на софтуерно меню, за да завърши картината. Ние ще трябва да определим няколко константи за елементи от менюто:

В (метод за добавяне) има четири параметъра:

  • Група ID - позволява да се сдружават елемент от менюто с група от други елементи на менюто
  • идентификатор точка за събитията за избор на менюто манипулатор
  • от порядъка на елемента в менюто - позволява да се определи позицията на менюто. По подразбиране (Menu.NONE или 0) артикула са в същия ред, както е посочено в кода
  • Title - текст, който се появява в менюто. Можете да използвате низ ресурс

Методът връща MenuItem обект. който може да се използва за монтаж на допълнителни свойства, например, да се създаде икона, клавиш и т.н.

Ако искате да създадете меню с икони, използвайте метод setIcon ()

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

метод onCreateOptionsMenu се нарича от системата само веднъж при създаването на менюта. Ако искате да се актуализира в менюто по време на изпълнение, използвайте метода за обратно повикване onPrepareOptionsMenu ().

При избора на елемента на менюто, наречен метод onOptionsItemSelected. който предава MenuItem обекта - елемента на менюто, избрано от потребителя. С помощта на метод getItemId може да получи идентификационния номер на избрания елемент от менюто. След идентификация на елемента от менюто, можете да напишете кода, който управлява събития за избор на менюто:

Shortcuts

Можете също да зададете клавиши за бърз достъп с помощта на знаците от клавиатурата, като се използват няколко метода:

  • setAlphabeticShortcut (Чар) - добавя характер
  • setNumericShortcut (инт) - добавя редица
  • setShortcut (Чар, вътр) - добавя комбинация от букви и цифри

Например, ако сте задали горещ клавиш setAlphabeticShortcut ( "р"). когато отворите менюто (или като задържите натиснат бутона за менюто), натискането на клавиш Q избира опцията в менюто. Този горещ клавиш (или комбинация от клавиши) ще бъде показан като подсказка, която показва името на елемента от менюто по-долу. Новите клавиатури разполагат с отделен ключ Ctrl. който работи по същия начин, както на обикновена клавиатура.

Бързите команди могат да бъдат създадени чрез XML: Android: alphabeticShortcut = "в".

Обработка може да се притисне чрез onKeyShortcut () Метод активност:

Създаване на подменю

Подменюта могат да се добавят към всяко меню, освен друго подменю. Подменю се създава метод за обаждане onCreateOptionsMenu () чрез метод addSubMenu (). която връща подменю обект. В подменю обект, можете да добавите допълнителни елементи към това меню, като се използва методът на добавката (). Например:

Сега се появява друг прозорец с подменю, когато изберете опция от менюто. Опитайте сами.

Добавянето на флагове и превключватели

опции в менюто могат да добавят квадратчета или радио бутони. За да добавите отметка или бутон за избор за отделен елемент от менюто, трябва да се използва setCheckable () метод:

Ако имате нужда да добавите още елементи от менюто с флагове или комутатори, че е възможно да ги комбинирате в една група меню, създаването на отделна идентичност. Менюто се добавя към групата чрез добавката на метод (). минаваща го като идентификатор на меню група първо параметър. Да предположим, че ние заявяваме идентификатори за група от менюто Цвят и елементите от менюто за настройка на цвета:

Сега, за да се създаде меню с флагове група за присвояване на група ID за всеки елемент от менюто и се обадете setGroupCheckable () метод за цялата група (не е необходимо да се предизвика setCheckable () метод за всеки елемент от менюто):

В setGroupCheckable на метод () три варианта:

  • първи параметър - идентификатор на групата на меню;
  • втори параметър - вярно, ако е позволено в превключвателите на групата или флагове;
  • Третият вариант - задава само (вярно) или множествена (фалшиво) избор на елементи от менюто. Този параметър всъщност определя външния вид на менюто - ще бъде меню с бутони или отметки.

За да контролирате състоянието на флаговете и ключове в менюто изход изберете събитието, което трябва да напишете следното:

Изпълнете проекта, извикайте менюто и изберете цвят. Вие ще имате подменю с три позиции (червено, зелено, синьо), под формата на знамена. Държавните флагове и ключове се обработват в кода на програмата и да се съхраняват в повтаряща се меню.

Можете просто да зададете намерението на избрания елемент от менюто чрез setIntent () метод, който се задейства при натискане на този момент, ако събитието не е било задържано, работещи onMenuItemClickListener (остаряла.) Или onOptionsItemSelected. Когато се активира, намерението се предава на метод startActivity.

Мека отваряне или затваряне на менюто

Ако по някаква причина трябва да програмно отваряне на менюто (например за демонстрационни цели), използвайте метод openOptionsMenu ():

За менюто на програмата, използвайте метода за затваряне closeOptionsMenu (). макар че си спомням openOptionsMenu () метод също се затваря менюто.

Софтуер елемент от менюто отстраняване

Да предположим, че ние определяме елемент от менюто в XML-файл:

За да премахнете допълнително менюто ясно от нашата програма за котки, трябва да имат достъп до елемента, чрез findItem () метод на менюто и да го направи невидим. препратка Меню за обекта, който искате да прехвърлите в метод onCreateOptionsMenu. програма за разпознаване на промяната в структурата на менюто.

Но това решение има недостатъка, ако искаме да се върти на екрана, peresozdatsya за дейността и дистанционно меню се появява отново. Как да се отърва от шибаната кученце?

Необходимо е да се помни, състоянието на елемента от менюто и да го съхранява в обект от тип пакет в onSaveInstanceState на метод. и извличане на запазеното състояние и преминават onPrepareOptionsMenu метод в метода onCreate (). който се нарича преди менюто на екрана:

Определяне на наличието на бутона Меню,

За маркиране на менюто

В съвременните устройства, менюто е част от лента за действия. И вие можете да персонализирате оформлението чрез XML меню.

Да речем, че сте избрали тази опция:

В showAsAction атрибут не се използва никога стойност. в противен случай оформлението няма да видите. Самото оформление определен чрез actionLayout атрибут. за маркиране:

Меню във фрагменти

Менюто може да бъде не само част от дейността, но също така и част от фрагмент. Принципът на действие е почти идентични. В фрагментът има подходящ метод.

FragmentManager отговорен за свикване onCreateOptionsMenu () при получаване на обаждане дейност onCreateOptionsMenu () от системата. Трябва изрично да кажа мениджър FragmentManager. че фрагментът е да получите покана onCreateOptionsMenu (). За да направите това, да се извика методът setHasOptionsMenu ():

Свързани статии

Подкрепете проекта - споделете линка, благодаря!