Programación Android: Interfaz gráfica

05/04/2019Artículo original

Los menús en las aplicaciones son algo que encontramos frecuentemente, de hecho, casi todos los terminales Android tienen un botón específico para desplegarlos.

Se dispone de distintos tipo de menús:

  • Options Menu: El menú típico, que se despliega al pulsar la tecla menú, que se divide en dos grupos:
  • Icon menu:Muestra un menú con iconos, 6 elementos como máximo.
  • Expanded Menu: Se usa cuando hay más de 6 elementos, mostrando un elemento con la palabra ‘Más’.
  • Context Menu: Menús contextuales desplegados al realizar una pulsación larga en una View.
  • Submenús: Menús desplegados al pulsar sobre un elemento de otro menú.

Options Menu

Lo más simple y sencillo es definir los menús en XML, colocado en ./res/menu, para este ejemplo he definido el siguiente menu, que contiene dos elementos, un About y un Quit:

<?xml version="1.0" encoding="utf­8"?><menuxmlns:android="http://schemas.android.com/apk/res/android"><itemandroid:id="@+id/about"android:icon="@drawable/about"android:title="About App"><menuxmlns:android="http://schemas.android.com/apk/res/android"><itemandroid:id="@+id/submenu"android:title="Submenú de &quot;About App&quot;"/></menu></item><itemandroid:id="@+id/quit"android:title="Quit App"android:icon="@drawable/quit"/></menu>

Bien, voy a explicar un poco la estructura de este menú, Empezamos declarando el menú con la etiqueta

  Qué es GitHub Copilot y cómo funciona
, que contendrá todos sus elementos bajo la etiqueta , en este caso, también tenemos un submenu, que se declara igual que el menú principal.

Los atributos de cada elemento son su identificador, el icono a mostrar y el título.

Para poder usar este menú, necesitamos inflarlo (Convertir el fichero XML en un objeto java), para hacer esto, hay que llamar a MenuInflater.inflate(), el código siguiente infla el fichero xml anterior en el método callback onCreateOptionsMenu().

@OverridepublicbooleanonCreateOptionsMenu(Menumenu){MenuInflaterinflater=getMenuInflater();inflater.inflate(R.menu.ejemplo_menu,menu);returntrue;}

Ahora, tenemos que responder a las acciones del usuario cuando pulse algún elemento de nuestro menú, para ello vamos a sobreescribir el método onOptionsItemSelected()

@OverridepublicbooleanonOptionsItemSelected(MenuItemitem){switch(item.getItemId()){caseR.id.about:Toast.makeText(MenusActivity.this,"Ejemplo Menús App",Toast.LENGTH_LONG).show();returntrue;caseR.id.quit:finish();returntrue; default:returnsuper.onOptionsItemSelected(item);}}

Context Menu

Los menús contextuales son similares a los menús mostrados al hacer click con el botón derecho de un ratón en un PC, para crearlos, debemos sobreescribir el método onCreateContextMenu(), donde inflaremos el archivo xml.

@OverridepublicvoidonCreateContextMenu(ContextMenumenu,Viewv,ContextMenuInfomenuInfo){super.onCreateContextMenu(menu,v,menuInfo);MenuInflaterinflater=getMenuInflater();inflater.inflate(R.menu.ejemplo_menu,menu);}

Al igual que en los options menu, tenemos que responder a las acciones del usuario:

@OverridepublicbooleanonContextItemSelected(MenuItemitem){switch(item.getItemId()){caseR.id.about:Toast.makeText(MenusActivity.this,"Ejemplo Menús App",Toast.LENGTH_LONG).show();returntrue;caseR.id.quit:finish();returntrue; default:returnsuper.onOptionsItemSelected(item);}}

Pero este menú contextual no se va a mostrar, ya que tenemos que asociarlo para que se lanze al realizar una pulsación prolongada sobre una view, en este caso un botón:

finalButtonboton=(Button)findViewById(R.id.button1);registerForContextMenu(boton);

Aquí dejo algunas capturas de pantalla de la aplicación:

  Visual Studio aterrizará pronto en Windows en ARM. Microsoft sólo llega 5 años tarde con la versión nativa

Option menu AndroidOption menu AndroidContext menu Android

Podéis encontrar más información sobre Menús en la página oficial de Android

Espero que os sirva de ayuda.

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Contiene enlaces a sitios web de terceros con políticas de privacidad ajenas que podrás aceptar o no cuando accedas a ellos. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Más información
Privacidad