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 -
