ejercicio 15 menus principal y submenus con opciones

6
Ejercicio 15 Menus Principal y Submenus con Opciones Como es habitual en Android, existen dos formas de crear un menú en una aplicación Android: definiendo el menú en un fichero XML e "inflándolo" después o creando el menú directamente mediante código Java. En este apartado veremos ambas formas. NOTA USE UN EMULADOR PARA API 10 (Nexus One) NOTA EN ANDROID MANIFEST USE SOLO MIN-SDK 10 OPCION 1: INFLAR EL XML Veamos en primer lugar cómo crear un menú principal con un submenú a partir de su diseño en XML. Estos ficheros XML con el diseño del menú se deben guardar en la carpeta res\menu del proyecto y tienen una estructura de este tipo (archivo menu_principal.xml): <?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android"> <item android:id="@+id/MenuOp1" android:title="Opción 1" android:icon="@drawable/menu_estrella"></item> <item android:id="@+id/MenuOp2" android:title="Opción 2" android:icon="@drawable/menu_brujula"></item> <item android:id="@+id/MenuOp3" android:title="Opción 3" android:icon="@drawable/menu_direccion"> <menu> <item android:id="@+id/SubMenuOp1" android:title="Opción 3.1" /> <item android:id="@+id/SubMenuOp2" android:title="Opción 3.2" /> </menu> </item> </menu> Podemos ver en el código anterior que la estructura básica del diseño del menú es muy sencilla. Aparece un elemento principal <menu> que contiene los elementos <item> que corresponden con las diferentes opciones del menú. Estos elementos <item> tienen a su vez varias propiedades básicas, como su ID (atributo android:id), su texto (atributo android:title) y su icono (atributo android:icon).

Upload: pepedguez

Post on 07-Nov-2015

222 views

Category:

Documents


0 download

DESCRIPTION

ANDROID

TRANSCRIPT

  • Ejercicio 15 Menus Principal y Submenus con Opciones

    Como es habitual en Android, existen dos formas de crear un men en

    una aplicacin Android: definiendo el men en un fichero XML e

    "inflndolo" despus o creando el men directamente mediante cdigo

    Java. En este apartado veremos ambas formas.

    NOTA USE UN EMULADOR PARA API 10 (Nexus One)

    NOTA EN ANDROID MANIFEST USE SOLO MIN-SDK 10

    OPCION 1: INFLAR EL XML

    Veamos en primer lugar cmo crear un men principal con un submen a

    partir de su diseo en XML. Estos ficheros XML con el diseo del men

    se deben guardar en la carpeta res\menu del proyecto y tienen una

    estructura de este tipo (archivo menu_principal.xml):

    Podemos ver en el cdigo anterior que la estructura bsica del diseo

    del men es muy sencilla. Aparece un elemento principal que

    contiene los elementos que corresponden con las diferentes

    opciones del men.

    Estos elementos tienen a su vez varias propiedades bsicas,

    como su ID (atributo android:id), su texto (atributo android:title) y

    su icono (atributo android:icon).

  • Los iconos utilizados deben guardarse en las carpetas res\drawable-...

    del proyecto.

    Adems, hemos definido un submen (men secundario) que se muestra al

    pulsar la opcin 3 del un men principal. Los submens en Android se

    muestran en una lista emergente cuyo ttulo contiene el texto de la

    opcin elegida del men principal.

    Este submen tiene dos nuevas opciones secundarias. Para ello, hemos

    aadido un nuevo elemento dentro del correspondiente a

    la opcin 3.

    De igual forma que otros archivos XML de un proyecto Android, podemos

    editarlo visualmente haciendo clic en la pestaa Layout del archivo

    que define el men:

    Una vez definido el men en el fichero XML, hay que implementar el

    mtodo onCreateOptionsMenu() de la Actividad para que se cree en la

    pantalla.

    En este mtodo debemos inflar el men de forma parecida a como ya

    hemos hecho con otro tipo de componentes layouts. Primero obtenemos

    una referencia al objeto "inflador" mediante el mtodo

  • getMenuInflater() y, despus, generamos la estructura del men usando

    el mtodo inflate() y pasndole como parmetro el ID del archivo XML

    de diseo del men.

    Finalmente, el mtodo debe devolver el valor true para indicar a la

    Actividad que debe mostrar el men.

    @Override

    public boolean onCreateOptionsMenu(Menu menu) {

    //Forma 1: definimos el men inflando el fichero XML con su diseo

    MenuInflater inflater = getMenuInflater();

    inflater.inflate(R.menu.menu_principal, menu);

    return true; }

    OPCION 2 IMPLEMENTAR EL MENU CON JAVA

    A continuacin, vamos a ver cmo implementar el diseo del men

    programndolo con sentencias Java.

  • Para ello, redefinimos el mtodo onCreateOptionsMenu() aadiendo las

    opciones del men mediante el mtodo add() del objeto Menu, que es un

    parmetro del primer mtodo.

    Este mtodo add() se invoca con cuatro parmetros:

    ID del grupo asociado a la opcin: veremos qu es esto en el

    siguiente ejemplo con un men contextual, por lo que

    establecemos el valor Menu.NONE.

    ID nico para la opcin: declaramos unas constantes de la clase.

    Orden de la opcin: como no queremos indicar ninguno, utilizamos

    Menu.NONE.

    Texto de la opcin: texto que aparece en el men.

    El icono de cada opcin lo establecemos mediante el mtodo setIcon()

    pasndole el ID del recurso.

    Veamos cmo queda el cdigo utilizando esta otra forma de

    implementarlo que genera un men exactamente igual al del ejemplo

    anterior:

    private static final int MENU_OP1 = 1; private static final int MENU_OP2 = 2; private static final int MENU_OP3 = 3; private static final int SMENU_OP1 = 31; private static final int SMENU_OP2 = 32; @Override

    public boolean onCreateOptionsMenu(Menu menu) {

    /* Forma 2: definimos el men con sentencias Java*/

    menu.add(Menu.NONE, MENU_OP1, Menu.NONE, "Opcin

    1").setIcon(R.drawable.menu_estrella);

    menu.add(Menu.NONE, MENU_OP1, Menu.NONE, "Opcin

    2").setIcon(R.drawable.menu_brujula);

    SubMenu submenu = menu.addSubMenu(Menu.NONE, MENU_OP1, Menu.NONE, "Opcin

    3").setIcon(R.drawable.menu_direccion);

    submenu.add(Menu.NONE, SMENU_OP1, Menu.NONE, "Opcin 3.1");

    submenu.add(Menu.NONE, SMENU_OP2, Menu.NONE, "Opcin 3.2");

    return true; }

  • Para aadir el submen a la opcin 3 utilizamos el mtodo addSubMenu()

    en lugar de add() y guardamos una referencia al submen donde

    insertamos las dos nuevas opciones utilizando una vez ms el mtodo

    add().

    Una vez construido el men, es necesario implementar las sentencias

    que se ejecutan cuando el usuario selecciona una de las opciones, para

    ello, usamos el evento onOptionsItemSelected() de la Actividad.

    Este evento recibe como parmetro el elemento de men (MenuItem) que

    ha sido elegido por el usuario y cuyo ID podemos obtener con el mtodo

    getItemId(). En funcin de este ID podemos saber qu opcin ha sido

    pulsada y ejecutar unas sentencias u otras. En nuestro ejemplo, lo

    nico que hacemos es modificar el texto de la etiqueta labelResultado

    que hemos colocado en la pantalla principal de la aplicacin:

    @Override

    // Si el usuario selecciona una opcin del men mostramos la opcin

    seleccionada en la etiqueta

    public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.MenuOp1: labelResultado.setText("Has pulsado la opcin 1");

    return true; case R.id.MenuOp2: labelResultado.setText("Has pulsado la opcin 2");

    return true; case R.id.MenuOp3: labelResultado.setText("Has pulsado la opcin 3");

    return true; case R.id.SubMenuOp1: labelResultado.setText("Has pulsado la opcin 3.1");

    return true; case R.id.SubMenuOp2: labelResultado.setText("Has pulsado la opcin 3.2");

    return true; default: return super.onOptionsItemSelected(item); }

    } // end onOptionsItemSelected

  • LAS IMGENES EN DRAWABLE