Xamarin - Menus

Menus Popup

Um menu pop-up refere-se a um menu anexado a uma visualização; também é conhecido comoshortcut menu. Vamos ver como adicionar um menu pop-up a um aplicativo Android.

Crie um novo projeto e chame-o popUpMenu App. AbrirMain.axml e crie um botão que será usado para exibir o menu pop-up.

<?xml version = "1.0" encoding = "utf-8"?> 
<LinearLayout xmlns:android = "http://schemas.android.com/apk/res/android" 
   android:orientation = "vertical" 
   android:background = "#d3d3d3" 
   android:layout_width = "fill_parent" 
   android:layout_height = "fill_parent"> 
   <Button 
      android:id = "@+id/popupButton" 
      android:layout_width = "fill_parent" 
      android:layout_height = "wrap_content" 
      android:text = "Show popup menu" 
      android:background = "@android:color/holo_green_dark" 
      android:textColor = "@android:color/black" /> 
</LinearLayout>

Crie uma nova pasta sob o Resources pasta e chamá-lo Menu. Dentro da pasta Menu, adicione um novo arquivo xml chamadopopMenu.xml.

Debaixo popMenu.xml, adicione os seguintes itens de menu.

<?xml version = "1.0" encoding="utf-8"?> 
<menu xmlns:android = "http://schemas.android.com/apk/res/android"> 
   <item 
      android:id = "@+id/file_settings" 
      android:icon = "@drawable/img_settings" 
      android:title = "Settings" 
      android:showAsAction = "ifRoom"> 
     
      <item 
         android:id = "@+id/new_game1" 
         android:icon = "@drawable/imgNew" 
         android:title = "New File Settings"/> 
      <item 
         android:id = "@+id/help" 
         android:icon = "@drawable/img_help" 
         android:title = "Help" /> 
      <item 
         android:id = "@+id/about_app" 
         android:icon = "@drawable/img_help" 
         android:title = "About app"/> 
   </item> 
</menu>

Depois de adicionar os itens do menu, vá para mainActivity.cs para exibir o menu pop-up ao clicar no botão.

protected override void OnCreate(Bundle bundle) { 
   base.OnCreate(bundle); 
   SetContentView(Resource.Layout.Main); 
   Button showPopupMenu = FindViewById<Button>(Resource.Id.popupButton); 
   showPopupMenu.Click += (s, arg) => { 
      PopupMenu menu = new PopupMenu(this, showPopupMenu); 
      menu.Inflate(Resource.Menu.popMenu); 
      menu.Show(); 
   }; 
}

Agora, crie e execute seu aplicativo. Ele deve produzir a seguinte saída -

Menu de Opções

Menu de opções é uma coleção de menus que são primários para um aplicativo e são usados ​​principalmente para armazenar configurações, pesquisar, etc. Aqui, vamos criar um menu para configurações com três itens dentro, ou seja, New File Settings, Help, and About App.

Para criar um menu de opções, devemos criar um novo arquivo de layout XML na pasta de recursos. Em primeiro lugar, adicionaremos um novo arquivo XML. Clique com o botão direito noLayout folder, então vá para Add → New item → Visual C# → XML File.

Escolha um nome apropriado para o layout file. Em nosso exemplo, chamaremos nosso arquivomyMenu.xml.

Dentro myMenu.xml, vamos criar um novo menu e adicionar itens dentro dele. O código a seguir mostra como fazer isso.

<?xml version = "1.0" encoding = "utf-8"?> 
<menu xmlns:android = "http://schemas.android.com/apk/res/android"> 
  <item 
      android:id = "@+id/file_settings" 
      android:icon = "@drawable/img_settings" 
      android:title = "Settings" 
      android:showAsAction = "ifRoom">
      
      <menu> 
         <item 
            android:id = "@+id/new_game1" 
            android:icon = "@drawable/imgNew" 
            android:title = "New File Settings" /> 
         <item 
            android:id = "@+id/help" 
            android:icon = "@drawable/img_help" 
            android:title = "Help" /> 
         <item 
            android:id = "@+id/about_app" 
            android:icon = "@drawable/img_help" 
            android:title = "About app"/> 
      </menu> 
   </item> 
</menu>

Em seguida, navegamos para MainActivity.cs e criar uma classe de substituição para onOptionsMenu().

public override bool OnCreateOptionsMenu(IMenu menu) { 
   MenuInflater.Inflate(Resource.Menu.myMenu, menu); 
   return base.OnPrepareOptionsMenu(menu); 
}

Em seguida, criamos uma ação para responder ao settings menuquando é selecionado. Para fazer isso, criamos outra classe de substituição para oOnOptionsItemSelected() cardápio.

public override bool OnOptionsItemSelected(IMenuItem item) { 
   if (item.ItemId == Resource.Id.file_settings) { 
      // do something here... 
      return true;  
   } 
   return base.OnOptionsItemSelected(item); 
}

Nosso código final completo será o seguinte -

namespace optionsMenuApp {     
   [Activity(Label = "options Menu", MainLauncher = true, Icon = "@drawable/icon")] 
   public class MainActivity : Activity { 
      public override bool OnCreateOptionsMenu(IMenu menu) { 
         MenuInflater.Inflate(Resource.Menu.myMenu, menu); 
         return base.OnPrepareOptionsMenu(menu); 
      } 
      public override bool OnOptionsItemSelected(IMenuItem item) { 
         if (item.ItemId == Resource.Id.file_settings) { 
            // do something here... 
            return true;  
         } 
         return base.OnOptionsItemSelected(item); 
      } 
   } 
}

Agora, crie e execute seu aplicativo. Ele deve produzir a seguinte saída -