Xamarin - Menús

Menús emergentes

Un menú emergente se refiere a un menú adjunto a una vista; también se lo conoce comoshortcut menu. Veamos cómo agregar un menú emergente a una aplicación de Android.

Crea un nuevo proyecto y llámalo popUpMenu App. AbiertoMain.axml y cree un botón que se utilizará para mostrar el menú emergente.

<?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>

Cree una nueva carpeta en el Resources carpeta y llámalo Menu. Dentro de la carpeta Menú, agregue un nuevo archivo xml llamadopopMenu.xml.

Debajo popMenu.xml, agregue los siguientes elementos de menú.

<?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>

Después de agregar los elementos del menú, vaya a mainActivity.cs para mostrar el menú emergente al hacer clic en el botón.

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(); 
   }; 
}

Ahora, cree y ejecute su aplicación. Debería producir el siguiente resultado:

Menú de opciones

El menú de opciones es una colección de menús que son primarios para una aplicación y se utilizan principalmente para almacenar configuraciones, buscar, etc. Aquí, vamos a crear un menú para configuraciones con tres elementos dentro, es decir, New File Settings, Help, and About App.

Para crear un menú de opciones, debemos crear un nuevo archivo de diseño XML en la carpeta de recursos. En primer lugar, agregaremos un nuevo archivo XML. Haga clic derecho en elLayout folder, luego ve a Add → New item → Visual C# → XML File.

Elija un nombre apropiado para el layout file. En nuestro ejemplo, llamaremos a nuestro archivomyMenu.xml.

Dentro myMenu.xml, vamos a crear un nuevo menú y agregar elementos dentro. El siguiente código muestra cómo hacerlo.

<?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>

A continuación, navegamos a MainActivity.cs y crea una clase de anulación para onOptionsMenu().

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

A continuación, creamos una acción para responder a la settings menucuando está seleccionado. Para hacer esto, creamos otra clase de reemplazo para elOnOptionsItemSelected() menú.

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

Nuestro código final completo se verá de la siguiente manera:

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); 
      } 
   } 
}

Ahora, cree y ejecute su aplicación. Debería producir el siguiente resultado: