Xamarin - Menus

Menus contextuels

Un menu contextuel fait référence à un menu associé à une vue; il est également appeléshortcut menu. Voyons comment ajouter un menu contextuel à une application Android.

Créez un nouveau projet et appelez-le popUpMenu App. OuvertMain.axml et créez un bouton qui servira à afficher le menu contextuel.

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

Créez un nouveau dossier sous le Resources dossier et appelez-le Menu. Dans le dossier Menu, ajoutez un nouveau fichier xml appelépopMenu.xml.

En dessous de popMenu.xml, ajoutez les éléments de menu suivants.

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

Après avoir ajouté les éléments de menu, accédez à mainActivity.cs pour afficher le menu contextuel en cliquant sur le bouton.

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

Maintenant, créez et exécutez votre application. Il devrait produire la sortie suivante -

Menu d'options

Le menu d'options est une collection de menus qui sont principaux pour une application et sont principalement utilisés pour stocker des paramètres, rechercher, etc. Ici, nous allons créer un menu pour les paramètres avec trois éléments à l'intérieur, c'est-à-dire, New File Settings, Help, and About App.

Pour créer un menu d'options, nous devons créer un nouveau fichier de mise en page XML dans le dossier des ressources. Tout d'abord, nous allons ajouter un nouveau fichier XML. Faites un clic droit sur leLayout folder, ensuite aller à Add → New item → Visual C# → XML File.

Choisissez un nom approprié pour le layout file. Dans notre exemple, nous appellerons notre fichiermyMenu.xml.

À l'intérieur myMenu.xml, nous allons créer un nouveau menu et ajouter des éléments à l'intérieur. Le code suivant montre comment procéder.

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

Ensuite, nous naviguons vers MainActivity.cs et créez une classe de remplacement pour onOptionsMenu().

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

Ensuite, nous créons une action pour répondre à la settings menulorsqu'il est sélectionné. Pour ce faire, nous créons une autre classe de remplacement pour leOnOptionsItemSelected() menu.

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

Notre code complet final ressemblera à ceci -

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

Maintenant, créez et exécutez votre application. Il devrait produire la sortie suivante -