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: