muligheder, så langt i vores androide ui byggesten tutorials, vi har ikke set på menuen, men de er en vigtig del af brugernes erfaringer med anvendelsen.læs om at komme i gang med den første type androide menu, mulighederne menu.,. androiden ui indeholder tre grundlæggende to typer:,,, de muligheder, er den, der forekommer, når to klik menuen knap på ældre androide anordninger, eller via foranstaltninger bar øverst i nyere (post 3.0).de muligheder, menu skal håndtere globale anvendelse foranstaltninger, som giver mening for hele app., ledsaget af menuer anføres, når du længe klik på et element.deres menuer skal håndtere element specifikke aktioner.det er særligt nyttigt i gridview eller listview skemaer, hvor de viser de bruger en liste over elementer, dukker op menuer udviser en vertikal liste over poster.det er godt, for at give mulighed for en anden del af en menu kommando, snarere end som en selvstændig menu.,,, på det pædagogiske, ser vi på at skabe muligheder menu via xml, og ved at tilføje en menupunkt programmatically.i næste måned vil vi se på kontekstuelle menuer for de enkelte produkter og for partier af produkter.vi skal bruge koden fra den foregående forelæsning om gridview, og tilføje en menu,.,, optioner menu, det er den bedste praksis for at definere en menu og posterne som en xml - menu ressource, så puster dem op i din kode.This makes it easier to see the menu structure, it means you can readily create different versions of the menu for different hardware, and it separates visual and behavioural code., ,The important parts of the menu XML (for both options and contextual menus) are:, , ,,<menu> -- a container for menu items (<item> and <group> elements), which must be the root node of the menu XML file.,, , , ,,,<item> -- a menu item (,MenuItem, once inflated in the code).,,, , , ,,,,<group> -- allows you to categorise <item>s into groups, but isn't itself visible.,,,, , ,Here's a sample options menu to save under ,res/menu/main_menu.xml,:, ,<menu xmlns:android="http://schemas.android.com/apk/res/android" > < punkt androide: id = "@ + id /baggrund" androide: afsnit = "@ snor /background_title" /> androide: showasaction = "aldrig" < punkt androide: id = "@ + id /skål" androide: afsnit = "@ snor /toast_title" /> androide: showasaction = "ifroom" < /menu >,,, id, lad os kalde denne attribut menupunkt i kode senere; og afsnit, tilskriver det punkt tekst titel, der vil blive udvist, hvis der ikke er et ikon., showasaction, angiver, om der vil blive vist i sig selv i aktion bar eller bare i flere aktioner "menu på højre side af baren.her, en aktion, vil blive udvist, hvis der er plads, og de andre vil ikke blive vist.se, hvis værdi for flere attributter, kan du sætte en menupunkt.,, du vil også tilføje tråde til res /værdier /i. xml,:,, < snor navn = "background_title" > ændring baggrundsfarve < /snor > < snor navn = "toast_title" > vise skål besked < /snor >,, når du har skabt en menu, du har brug for at øge dette i koden for det til at blive vist på runtime.føj det til gridviewtestactivity:,, offentlige boolean oncreateoptionsmenu (menu menu) (menuinflater inflater = getmenuinflater(); inflater. puste (r.menu.main_menu menuen); tilbage.}, udarbejde og løb, og tjekke dine muligheder menu.det er en androide 4.3, så viser det aktion bar; i androide 2.3 eller lavere, du ville slå menuen knap til at trække de muligheder menu, og det forekommer i bunden.,,, den tekst, der anvendes på foranstaltninger bar ikke er ideel, og du ville være bedre til at skabe og bevare et ikon, i res /drawable, og derefter lægge denne attribut til menupunkt:,, androide: ikon = "@ drawable /toast_icon. men heller ikke dér er menneskene sikre", håndtering menu klik,, der i øjeblikket sker der intet, når brugeren klik menuen poster.vi er nødt til at skrive en metode til at håndtere klik:,, offentlige boolean onoptionsitemselected (menuitem punkt på dagsordenen) (skift (punkt på dagsordenen. getitemid()) (sag r.id.background: changebackground(); tilbage rigtigt; sag r.id.toast: skål. maketext (getbasecontext(), r.string.toast_message, skål. length_long). show(); tilbage. misligholdelse: tilbagevenden til viceværten. onoptionsitemselected (pkt.);}} private tomrum changebackground() {gridview. setbackgroundcolor (farve. cyan)}, alle, vi har brug for, er en switch - erklæring, som ser på punkt id - kort for at beslutte, hvilke foranstaltninger til at gøre.bemærk, at misligholdelse er at give op til overklassen.det er særlig nyttigt, hvis du vil have en menu poster i mange forskellige aktiviteter i en enkelt app.du kan skrive en superclass, som skaber en grundlæggende menu, og så arve fra superclass, til at få de samme metoder i alle deres aktiviteter.,, samle og køre det her, og du vil være i stand til at se en besked eller ændre baggrundsfarve.en god forbedring vil give brugerne et valg mellem forskellige baggrundsfarver.,,,,, at tilføje en menupunkt med kode, selv om størstedelen af den tid, det er bedst at skrive jeres menu poster i xml, nogle gange er du nødt til at være i stand til at tilføje en menupunkt programmatically - f.eks. en menupunkt det viser sig kun under visse omstændigheder, eller som ændringer.først, lad os se på en ændring af menupunkt baseret på dag:,, offentlige klasse gridviewtestactivity udvider aktivitet (private menu menu; int backgroundcolour; offentlige boolean oncreateoptionsmenu (menu menu) (this.menu = menu. getmenuinflater(). puste (r.menu.main_menu menuen); setbackgrounditem(); tilbage.} offentlige boolean onoptionsitemselected (menuitem punkt på dagsordenen) (//som før sag r.id.background: changebackground (backgroundcolour); tilbage. //resten som før} private tomrum setbackgrounditem() {kalender cal = kalender. getinstance(); int dag = cal. kom (kalender. day_of_week); hvis (dag = = kalender. søndag) (backgroundcolour = color.magenta; menuitem punkt = menu. finditem (r.id.background); punkt på dagsordenen. settitle ("ændre baggrundsfarve til magenta");} andre (backgroundcolour = color.cyan;}} private tomrum changebackground int (farve) (gridview. setbackgroundcolor (farve)), og meget af det, der er den samme kode som før, - refactored lidt (har vi brug for menuen og baggrund farve som klasse variabler).den vigtigste ændring er, setbackgrounditem(),, der kontrollerer den dag i ugen, og hvis det er en søndag, tager den baggrund farve menupunkt med sit id, og ændringer i afsnit i, punkt. settitle(),.,,,,,, at tilføje en hel menupunkt, er ganske ligetil.,,, offentlige klasse gridviewtestactivity udvider aktivitet {menig static endelige int new_message = 0, offentlige boolean oncreateoptionsmenu (menu menu) (//tilføje dette: addnewitem();} offentlige boolean onoptionsitemselected (menuitem punkt på dagsordenen) (skift (punkt på dagsordenen. getitemid()) (//resten af skift bemærkning som tidligere tilfælde new_message: skål. maketext (getbasecontext(), r.string.new_message, skål. length_long). show(); //resten somderfor} private tomrum addnewitem() {menu. der tilsættes (0, new_message, 0, r.string. new_message_title)), og det første argument til menuen. add(), er gruppen id. vi har ingen grupper på menuen, så det er nul.den anden er punkt id, defineret i toppen af klassen.den tredje er den ordre, vi anvender 0, som vi ikke bekymrer os om det.vi giver den titel.og det er vores nye menupunkt skabt.husk at tilføje en sag til, onoptionsitemselected(), således at den nye menu punkt på dagsordenen er korrekt håndteret.,, samle og flygt, og du vil se din nye budskab ud.bemærker imidlertid, at selv om en dynamisk tilsat menupunkt undertiden er korrekte, vil du måske være bedre at skabe menupunkt i xml - som med de andre - - og så bruger denne linje:,, pkt. setvisible (forkert);,,, at dens synlighed baseret på kode betingelser, som vi har ændret titlen på baggrund farve menupunkt i kodeksen,.,,, vi har styr på det grundlæggende valg menuer, tjek næste måneds forelæsning for mere om deres menuer og batch - forarbejdning af produkter i en liste,.,,