Jobber med Android's PopupMenu-klasse

På Android-operativsystemet de siste årene har vi sett store overhalinger innen brukergrensesnitt (UI) og brukeropplevelse. Et mønster som har dukket opp og tatt tak er hurtigaksjonen eller popup-menyen. Disse menyene vises i sammenheng og kan knyttes til ethvert syn i hierarkiet på en ikke-påtrengende måte.

Før Honeycomb var det ganske mye arbeid å oppnå en popup-lignende menyfunksjonalitet i appene dine, men nå har de gjennomtenkte menneskene på Googles Android-rammeteam bygget en PopupMenu-widget rett inn i UI-settet som gjør alt det tunge løftet. Denne opplæringen vil lede deg gjennom det grunnleggende om PopupMenu. Følg gjerne med trinn-for-trinn-opplæringen nedenfor eller last ned og importer hele prosjektet til Eclipse.

1. Lag et nytt Android-prosjekt i Eclipse. PopupMenu-klassen krever at du er målrettet mot API-nivå 11 eller høyere. Sørg for å gi nytt navn til oppstartsaktiviteten til Main.java og tilknyttet layout til main.xml.

2. Endre main.xml i mappen / res / layout. Vi vil bruke en lineær layout med en serie vertikalt stablede tekstvisninger.

 main.xml 
 "Http://schemas.android.com/apk/res/android" 
 android: layout_width = "fill_parent" 
 android: layout_height = "fill_parent" 
 android: orientering = "vertikal" > 
 android: layout_width = "wrap_content" 
 android: layout_height = "wrap_content" 
 android: layout_gravity = "sentrum" 
 android: textSize = "20sp" 
 android: textColor = "# 000000" 
 android: layout_margin = "20dip" 
 android: text = "Eksempel på popup-meny" /> 
 android: layout_width = "wrap_content" 
 android: layout_height = "wrap_content" 
 android: text = "Trykk her for å se menyen." 
 android: layout_margin = "20dip" 
 android: layout_gravity = "sentrum" 
 android: textColor = "# 0000ff" 
 android: id = "@ + id / anker" /> 
 android: layout_width = "wrap_content" 
 android: layout_height = "wrap_content" 
 android: layout_margin = "20dip" 
 android: layout_gravity = "sentrum" 
 android: textSize = "40sp" 
 android: textColor = "# 808080" 
 android: id = "@ + id / valg" /> 

3. Deretter vil vi jobbe med Main.java i / src-mappen. Hovedklassen utvider aktiviteten og implementerer både en på klikklytter og på menyelementet klikker lytteren. I on create overstyring lager vi en ny meny og kobler den opp. Pop-up-menyklassen er basert på den vanlige menyelementenheten, så hvis du har brukt kontekstmenyer eller standardmenyer, skal den se kjent ut.

 Main.java 
 pakke com.authorwjf.popmenu; 
 import android.os.Bundle; 
 import android.view.Menu; 
 import android.view.MenuItem; 
 import android.view.View; 
 import android.view.View.OnClickListener; 
 import android.widget.PopupMenu; 
 import android.widget.PopupMenu.OnMenuItemClickListener; 
 import android.widget.TextView; 
 import android.app.Aktivitet; 
 public class Main utvider aktivitetsredskaper OnClickListener, OnMenuItemClickListener { 
 privat PopupMenu popupMenu; 
 privat endelig statisk int ONE = 1; 
 privat endelig statisk int TO = 2; 
 privat endelig statisk int TRE = 3; 
 @Overstyring 
 beskyttet tomrom onCreate (Bundle savedInstanceState) { 
 super .onCreate (savedInstanceState); 
 setContentView (R.layout. main ); 
 popupMenu = new PopupMenu ( dette, findViewById (R.id. anker )); 
 popupMenu.getMenu (). legg til (Meny. INGEN, EN, Meny. INGEN, "Punkt 1"); 
 popupMenu.getMenu (). legg til (Meny. INGEN, TO, Meny. INGEN, "Punkt 2"); 
 popupMenu.getMenu (). legg til (Meny. INGEN, TRE, Meny. INGEN, "Punkt 3"); 
 popupMenu.setOnMenuItemClickListener ( dette ); 
 findViewById (R.id. anker ) .setOnClickListener ( dette ); 
 } 
 } 

4. I vår klikkbehandler trenger vi bare å vise popup-menyen. Android vil ta seg av å bestemme seg for om du vil slå menyen av eller på, samt legge den ut på skjermen slik at den ikke skjuver utsikten som fungerer som ankeret.

 @Overstyring 
 public void onClick (Vis v) { 
 popupMenu.show (); 
 } 

5. Vi vil oppdatere skjermen vår som viser hvilket element som er valgt med riktig tilbakeringing.

 @Overstyring 
 offentlig boolsk onMenuItemClick (MenuItem-vare) { 
 TextView tv = (TextView) findViewById (R.id. Utvalg ); 
 switch (item.getItemId ()) { 
 case ONE : 
 tv.setText ( "en"); 
 pause ; 
 sak to : 
 tv.setText ( "to"); 
 pause ; 
 tilfelle tre : 
 tv.setText ( "tre"); 
 pause ; 
 } 
 return falsk ; 
 } 

Der har vi det - en enkel, men elegant widget du kan bruke for å forbedre applikasjonene dine. Legg inn prøvekoden på en enhet eller emulator og prøv den. Husk at målet må løpe Honeycomb eller bedre.

Figur A

Figur B

Figur C

© Copyright 2021 | pepebotifarra.com