Crear Menú Hamburguesa en Xamarin.Forms

¡Hola a todos nuevamente! en este post escribiré una manera de crear un bonito Menú Hamburguesa, como se conoce.

Bueno, este será el resultado final de nuestro proyecto, así que comencemos…

Posrtada

Lo primero que haremos es crear el proyecto, darle un nombre y escoger la ruta donde se guardará.

Imagen1

Lo siguiente es escoger el tipo de proyecto que utilizaremos, no importa si estás usando PCL o .Net Standard…

Imagen2

 

Ahora lo primero que haremos dentro del proyecto es crear una página de contenido para que se usará como plantilla que contendrá nuestra lista de opciones del menú, yo le llamé HamburgerMenu

Imagen3.png

En su contenido de XAML, cambiaremos las etiquetas del archivo y pondremos que será una MasterDetailPage o en español «Página Maestra».

Imagen4

Las estiquetas de ContentPage.Conten las sustituiremos de la siguiente manera MasterDetailPage.Master

Imagen5.png

Y dentro de estas etiquetas tendremos un ContentPage que es donde diseñaremos la lista de opciones del Menú.

Imagen6

El diseño de nuestro Menú quedará más o menos de la siguiente manera, tendremos un ListView que como mencioné antes este tendrá todas las opciones laterales que le queramos dar y pasaremos su contenido con Bindings.

Imagen7

Algo muy importante a modificar es la herencia de nuestra clase, ya no será ContentPage Sino MasterDetailPage, y si no cambiamos esto nuestro proyecto no funcionará.

Imagen8

Imagen9

Ahora dentro de código de HamburgerMenu crearemos una clase llamada Menu, la cual contendrá todas las propiedades de las opciones del menú. Así como el titulo, el detalle y su icono.

NOTA IMPORTANTE: Ya tenemos que tener las imagenes descargadas y copiadas en sus respectivas carpetas, en el post de Menu Grid lo expliqué.

Imagen14

Imagen10

Ahora podemos proceder a crear todas las Content Pages que tendrá nuestra aplicación… es decir todas las pantallas, para este ejemplo solo crearé una que se llamará Feed

Imagen11

Ahora un método que será el que llenará los elementos (opciones) del menú.Imagen12

Esta será la primer linea de código que tendrá el método y en esta básicamente indicamos que detrás de nuestra Página Maestra o Menú tendremos a nuestra pantalla llamada Feed.

Imagen13

Y seguidamente podremos llenar la clase Menu con una lista donde establecemos todas las propiedades con su respectivo valor.

Donde se agrega la propiedad Page tenemos que poner cada una de nuestras pantallas a donde se irá al dar clic en la opción.

Imagen15

Y no hay que olvidarnos de inicializar nuestra App con el Menú de hamburguesa.

Esto lo configuramos en la clase App.xaml.cs

Imagen16

Si ejecutamos esto en un dispositivo Android o iOS esto funciona sin problema pero si queremos agregar el evento de selección de las opciones del menú agregaremos el evento ItemSelected en el ListView de  HamburgerMenu.xaml y por parte de Code-Behind agregaremos el siguiente código para navegar entre las opciones.

Imagen17

 

Como resultado de la App tendremos el siguiente Menú de Hamburgesa:

Menu en Android:

ezgif.com-video-to-gif

Menu en iOS:

ezgif.com-video-to-gif (1)

Recuerden que sólo agregué una página así que sólo estaré navegando entre esa página cada vez que cambie de opción del menú.

 

¡Espero que hayan disfrutado de este post express! y sobre todo que hayas aprendido algo nuevo y te sea de mucha utilidad!

 

Clic aquí para descargar el proyecto!

15789-illustration-of-a-blank-glossy-rectangular-button-pv

Luis David De La Cruz Bautista

21 comentarios

  1. Hola Luis. De pura casualidad me topé con este gran blog. Super interesante y desde ya, estoy probando las cosas que explicas. Sobre el diseño hamburguesa, podrías hacer una pequeña explicación de cómo jalar ítems desde una base de datos, de modo q las opciones no seas estáticas. Gracias. Te seguiré

    Me gusta

  2. Hola Luis tu blog esta muy bien me esta ayudando mucho si antes de la panatalla de menu hamburguesa tengo una login y esta es mi main page y despues de loguearme paso a esta como lo haria poque lo que tengo me da error

    Me gusta

  3. Excelente Blog bro!. Una pregunta
    Unos de los items de mi menu es cerrar sesion este tiene la funcion de devolver al usuario hasta la pagina del login, el problema que tengo es que al regresar al login mantiene el menu Hamburguesa, hay una forma de hacer esa excepcion, debido a que este menu se me mantiene; en el login se me desacomodan ciertos objetos. Saludos

    Me gusta

  4. Luis!!!!
    Salvame la vida…
    Estoy haciendo el ejercicio pero cuando corro el programa me aparece un error (Master and Detail must be set before adding MasterDetailPage to a container).

    <!—->

    ———————-
    Muchas gracias.

    Me gusta

  5. Saludos amigo, excelente artículo. Quería hacerte una consulta por cuanto soy nuevo en el mundo de xamarin. Estoy intentando ampliar tu ejemplo de modo de anteceder el menú con una pantalla de inicio de sesión, la cual me funciona, el problema radica en que en la pantlla del menú me coloca la barra de navegación, la cual desplaza todo hacia abajo. He intentado quitarle la barra con las opciones NavigationPage.HasNavigationBar=»False» y NavigationPage.HasBackButton=»False» pero lo que realmente hace es quitar el menú de la hamburguesa. Cómo puedo hacer para eliminar el menú de navegación y que sólo quedé el menú que diseñaste?

    Me gusta

  6. Hola Luis muy bueno el post, tengo una duda, en mi proyecto el MainPage en App.xaml es un Log In page y no el HamburguerMenu, por lo que al iniciar da un error «Master and Detail must be set before MasterDetailPage», soy nuevo en Xamarin y no he podido corregir este error, agradeceria tu ayuda.

    Me gusta

Deja un comentario