Xamarin - Menu
Menu a comparsa
Un menu popup si riferisce a un menu allegato a una vista; è indicato anche come ashortcut menu. Vediamo come aggiungere un menu popup a un'app Android.
Crea un nuovo progetto e chiamalo popUpMenu App. ApertoMain.axml e creare un pulsante che verrà utilizzato per visualizzare il menu a comparsa.
<?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>
Crea una nuova cartella sotto Resources cartella e chiamalo Menu. All'interno della cartella Menu, aggiungi un nuovo file xml chiamatopopMenu.xml.
Sotto popMenu.xml, aggiungi le seguenti voci di 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>
Dopo aver aggiunto le voci di menu, vai a mainActivity.cs per visualizzare il menu a comparsa al clic del pulsante.
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();
};
}
Ora, crea ed esegui la tua applicazione. Dovrebbe produrre il seguente output:
Menu delle opzioni
Il menu Opzioni è una raccolta di menu che sono primari per un'app e vengono utilizzati principalmente per memorizzare impostazioni, ricerche, ecc. Qui creeremo un menu per le impostazioni con tre elementi all'interno, ad es. New File Settings, Help, and About App.
Per creare un menu di opzioni, dobbiamo creare un nuovo file di layout XML nella cartella delle risorse. Prima di tutto, aggiungeremo un nuovo file XML. Fare clic con il pulsante destro del mouse sul fileLayout folder, quindi vai a Add → New item → Visual C# → XML File.
Scegli un nome appropriato per il file layout file. Nel nostro esempio, chiameremo il nostro filemyMenu.xml.
Dentro myMenu.xml, creeremo un nuovo menu e aggiungeremo elementi all'interno. Il codice seguente mostra come farlo.
<?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>
Successivamente, passiamo a MainActivity.cs e crea una classe di sostituzione per onOptionsMenu().
public override bool OnCreateOptionsMenu(IMenu menu) {
MenuInflater.Inflate(Resource.Menu.myMenu, menu);
return base.OnPrepareOptionsMenu(menu);
}
Successivamente, creiamo un'azione per rispondere a settings menuquando è selezionato. Per fare ciò, creiamo un'altra classe di override perOnOptionsItemSelected() menù.
public override bool OnOptionsItemSelected(IMenuItem item) {
if (item.ItemId == Resource.Id.file_settings) {
// do something here...
return true;
}
return base.OnOptionsItemSelected(item);
}
Il nostro codice completo finale apparirà come segue:
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);
}
}
}
Ora, crea ed esegui la tua applicazione. Dovrebbe produrre il seguente output: