Menú
Está libre
registro
hogar  /  Consejo/ Cómo agregar un botón de menú en Android. Cómo abrir y configurar el menú de ingeniería en Android: instrucciones y códigos secretos

Cómo agregar un botón de menú en Android. Cómo abrir y configurar el menú de ingeniería en Android: instrucciones y códigos secretos

Entonces, creemos un menú simple hoy para una aplicación de Android. Vamos a crear nuevo proyecto... Llamémoslo Mymenu, haga clic en siguiente. Elijamos Actividad vacía. Haga clic en finalizar.

El sistema de estudio Android nos preparará un nuevo proyecto, vayamos a los scripts de Gradle. En Build gradle, agreguemos una nueva implementación. Necesitamos un paquete

implementación "com.android.support:design:26.0.0-beta1"

Al menos en mi proyecto. Haga clic en Sincronizar proyecto.

Elementos de menú

Vayamos a la carpeta Res y creemos una nueva carpeta de recursos de Andriod en ella con un tipo de recurso: menú. En él, crearemos un nuevo menú de archivo de recursos. Asignaremos un nombre al archivo, así como el nombre de la carpeta - menú.

En nuestro menú principal, arrastrando y soltando, agregue un MenuItem en la cantidad de 3 piezas.

En el archivo strings.xml, escriba un nuevo nombre para los elementos del menú creando valores de cadena adicionales para ellos.

Deje que item1 sea Item 1, item2 sea Item 2 y item3 sea Exit.

Párrafo 1 Punto 2 Producción

En la versión textual de menu.xml, asignaremos nombres de strings.xml para nuestros elementos. También para cada elemento agregaremos un Android: id llamado action1, action2, action3,

para interactuar con estos elementos. La acción número 1 será responsable de algo, algún tipo de reacción, presionando Acción 2, respectivamente, será responsable de otras acciones, Acción 3 será responsable de salir de la aplicación.

En el archivo MainActivity, escribiremos varias funciones para trabajar con el menú:

onCreateOptionsMenu @Override public boolean onCreateOptionsMenu (menú de menú) (getMenuInflater (). inflate (R.menu.menu, menú); return true;) onOptionsItemSelected @Override public boolean onOptionsItemSelected (cambio de ítem de menú) (int id .id.action1: txt.setText (R.string.item1); return true; case R.id.action2: txt.setText (R.string.item2); return true; case R. id.action3: txt.setText (R.string.item3); finish (); return true;) return super.onOptionsItemSelected (item);)

Declaremos una variable de tipo TextView txt, y la vinculamos al elemento TextView, en onCreate vía

txt = (TextView) findViewById (R.id.txt),

en el diseño activity_main.xml agregándolo

android: id = "@ + id / txt"

para mostrar texto.

Comencemos nuestra aplicación en el emulador. Como puede ver, aparecen elementos de menú, cuando hace clic en el valor del Elemento 1 o 2, el texto cambia a Elemento 1 o Elemento 2, cuando hace clic en el botón Salir, aparece el texto Salir y la aplicación se cierra.

Disposición del menú

Todo parece estar bien, Sin embargo, como siempre en Android Estudio dado el menú solo funcionará en el emulador, y por lo tanto agregaremos un pequeño código al archivo styles.xml, y antes de eso cambiaremos en el AndroidManifest.xml

android: theme = "@ style / AppTheme"

android: theme = "@ style / AppTheme.NoActionBar"

que dice que nuevo estilo sin ActionBar. Además, en MainActivity onCreate, agregue la variable de la barra de herramientas con el tipo ToolBar. Vamos a definirlo a través de toolbar = (Toolbar) findViewById (R.id.toolbar), y habilitemos la compatibilidad con setSupportActionBar (barra de herramientas).

Agregue el siguiente código al diseño activity_main.xml delante de TextView:

Conectemos estos widgets a la importación de nuestra aplicación.

importar android.support.v7.widget.Toolbar;

Presione Alt + Enter, y agregaremos, actualizaremos la importación de nuestra aplicación. Puede que tenga que hacerlo varias veces para conectar el widget. Clic en Guardar.

Ahora podemos ejecutar nuestra aplicación en el emulador. Todo se ve exactamente igual, pero sin este código, nuestra aplicación no se puede instalar en un dispositivo real. Hagamos una solicitud firmada.

Érase una vez, hace unos 5 años, los dispositivos con el sistema operativo Android estaban ganando popularidad rápidamente. Era un buen momento, el mundo estaba saliendo de la crisis, había muchas cosas interesantes por delante y había un botón de Menú en cada dispositivo.
Dos años más tarde, los chicos de Android informaron que el botón "menú" en la carcasa del teléfono ya no está de moda y se puede prescindir de él. Desde entonces, cada uno de nosotros (el Gremio de Desarrolladores) sabe cómo abrir el menú en la gran mayoría de dispositivos Android.
Para algunos, esto parecerá un acordeón de botones terrible, aun así, pero la semana pasada pasamos 2 horas de nuestra vida tratando de explicárselo al usuario. Era imposible aguantar esto, por lo que a continuación describo cómo llamar a la función de menú en dispositivos Android.
Así es como se ven los botones de menú mecánicos en la mayoría de los dispositivos comunes:

Además, en la mayoría de los casos, un toque breve es suficiente para llamar a la función del menú. Sin embargo, a menudo se puede agregar una llamada de menú al botón de selección ejecutando aplicaciones... Se parece a esto:


En este caso, se abrirá el menú. solo con una pulsación larga(llamado clic largo)! Es decir no solo pinchaba con un dedo, sino que empujaba y sostenía... Mucha gente dice después de eso ¡Guau!

Aconsejo a los propietarios de tabletas que presten atención área de trabajo pantalla, aquí es donde se encuentran los botones con mayor frecuencia, incluido el menú.


Además, no siempre es el máximo a la derecha, pero este botón se ve exactamente así.
Sobre versiones frescas El botón de menú del sistema operativo Android tiene este aspecto.

Hay muchos funciones ocultas que puede ser muy útil. System UI Tuner es uno de ellos. Después de activar este menú, el usuario obtiene más opciones en términos de personalización. Interfaz de Android... En uno de los artículos sobre Treshbox ya estamos.

Algunos desarrolladores ya han adaptado System UI Tuner para satisfacer las necesidades. usuarios ordinarios... Por ejemplo, que también estaba disponible en Versión anterior Android usa UI Tuner para agregar botones personalizados al menú de acción rápida, que se desliza desde la parte superior junto con la cortina de notificaciones. Lo bueno es que, en Android 6.0 Marshmallow, el uso de configuraciones rápidas personalizadas no requiere acceso de root.

Cómo funciona

En primer lugar, debe activar el mismo menú del sintonizador de interfaz de usuario del sistema, que solo funciona en un versión de Android 6.0 malvavisco. Algunas vistas previas de Android M no obtuvieron esta función. Puede leer sobre la activación del UI Tuner en nuestro artículo correspondiente, pero si no desea saltar a algún lugar de este material, entonces: abra completamente la "cortina" superior con acciones rápidas y notificaciones, mantenga presionado el botón con el engranaje que lleva en el menú de configuración: todo, System UI Tuner está activado. Ahora en el menú general Configuraciones de Android apareció el elemento correspondiente, pero prácticamente no lo necesitará. La aplicación Configuración rápida personalizada lo hace todo por usted.


A continuación, instale la propia aplicación Configuración rápida personalizada, que está disponible de forma gratuita, pero con anuncios. Se elimina mediante compras internas: 99 rublos.


Después de instalar la aplicación, se puede agregar un botón personalizado con una acción en el menú superior con un par de acciones. Al hacer clic en Custom Quick Settings más, puede seleccionar el nombre del botón, su acción es abrir cualquier página web especificada, iniciar una aplicación, ir a algunos submenús de configuración o activar el módulo. Para un botón, puede seleccionar un icono (en total, hay 1200 piezas estándar disponibles; se admiten las personalizadas), así como una acción adicional con una pulsación larga. Por ejemplo, puede crear un enlace rápido a la Papelera, y una pulsación larga se abrirá o cualquier otro sitio, algo muy conveniente.

Posibilidades

También puede realizar una acción rápida que conectará el dispositivo a una red Wi-Fi específica, está presente en la lista guardada. Los botones personalizados con aplicaciones de inicio serán muy útiles; no es necesario ir al escritorio para abrir el programa deseado.

Las posibilidades en términos de creación de acciones rápidas son muy limitadas: solo puede establecer una conexión a una Redes wifi o un dispositivo Bluetooth. Todo aquí se basa en la funcionalidad del sintonizador de interfaz de usuario del sistema.


En la versión Pro de la aplicación, puede agregar atajos funcionales con acciones rápidas. Hay soporte para IFTTT. Vale la pena señalar que todos los botones personalizados agregados con la configuración rápida personalizada no funcionan en la pantalla de bloqueo, simplemente no aparecen en el obturador, lo cual es bastante esperado.

Recordemos que todas estas funciones también están disponibles en Android 5.0 / 5.1, pero son necesarias para ello. El desarrollador señala que la configuración rápida personalizada no usa energía adicional de la batería: el programa se inicia una vez en el inicio del sistema y los botones personalizados se actualizan solo después de que el usuario lo hace.

Es bueno ver como el quirófano sistema Android con cada nueva versión asume funciones que anteriormente solo estaban disponibles con derechos de root. Con suerte, Google no eliminará la función System UI Tuner en el futuro. Actualización de Android 6.0.1 o 6.1. Por cierto, ¿ya te has actualizado a Marshmallow?

Android admite varios tipos de menús. La primera es que hay un botón separado en el teléfono. Menú(en teléfonos más antiguos), al presionar se abre un menú. En los dispositivos nuevos, se eliminó un botón separado, reemplazándolo con un ícono de menú en forma de tres puntos en una orientación vertical. El segundo tipo es un menú contextual que aparece cuando presiona y mantiene presionado el dedo en la pantalla en el lugar deseado (también puede presionar y mantener presionado botón central en el teléfono). Menú de contexto a su vez puede tener un submenú. Hoy echaremos un vistazo al primer tipo de menú. Este artículo considerará trabajar con el menú en nuevos dispositivos en Androide 4.0 en adelante.

En la plantilla Actividad vacía no hay menú, así que lo crearemos nosotros mismos. Esto lo ayudará a comprender cómo funciona y a obtener una descripción general del proyecto. No es necesario recordar los nombres de las clases, métodos y código para manejar la selección del menú. En otras plantillas, el menú estará integrado y podrá usarlo inmediatamente.

Crea un nuevo proyecto basado en Actividad vacía y ejecutarlo. Aún no hay menú.

Creemos algunos recursos de cadena en un archivo res / valores / strings.xml que será responsable de los elementos del menú:

Ajustes gato Gato gatito

Ahora crea nueva carpeta menú en carpeta res res, | Nuevo | Directorio). A continuación, cree un archivo en la carpeta creada menu_main.xml- el nombre indica que el menú está relacionado con la actividad principal Actividad principal(clic derecho en la carpeta menú | Nuevo | Archivo de recursos de menú). Si va a crear una aplicación con varias pantallas, entonces cada actividad tendrá un menú separado con su propia configuración. Por ahora, abramos el archivo. menu_main.xml y agregue nuestro código a la plantilla resultante:

Vamos a abrir el archivo Actividad principal... Ahora solo hay un método onCreate ()... Agreguemos un nuevo método onCreateOptionsMenu ()... Exactamente este método es responsable de la apariencia del menú de la actividad. Elige un menú en el estudio Código| y en la siguiente ventana comience a ingresar el nombre del método por las primeras letras. Puede ingresar usando las primeras letras mayúsculas, es decir ocom o norte C reatar O pciones METRO enu) para encontrar rápidamente la línea que desea. Presione el botón OK y obtenemos la pieza de trabajo.

@Override public boolean onCreateOptionsMenu (menú Menú) (return super.onCreateOptionsMenu (menú);)

Agregue un método a la plantilla que toma datos de los recursos del menú y los convierte en elementos del menú en la pantalla.

@Override public boolean onCreateOptionsMenu (menú de menú) (getMenuInflater (). Inflate (R.menu.menu_main, menu); return true;)

En el método inflar () señala un recurso de menú ( R.menu.menu_main) y objeto de clase Menú.

En inglés, "inflar" se traduce como inflar, es decir. Tal como lo concibieron los desarrolladores de Android, inflamos un objeto, por ejemplo, un menú, con datos. Pero, de hecho, la palabra "inflar" proviene de la frase en plano- al apartamento. Existe una vieja tradición de dejar entrar al gato primero en el apartamento, que explora todos los rincones y recovecos de la casa y declara su consentimiento para vivir en él. Así es como ejecutamos los datos del archivo XML en el objeto MenuInflater.

Ejecute el proyecto. Ahora, en el lado derecho del encabezado, verá un icono de tres puntos dispuestos en una línea vertical. Haga clic en el icono para ver el elemento del menú Ajustes.

Como puede adivinar, el elemento artículo responsable de un elemento de menú separado. Agreguemos tres elementos más de la misma manera, cambiando solo el identificador y el texto del menú:

Ejecute el proyecto e intente abrir el menú nuevamente. Verá tres elementos nuevos.

Opciones identificación y título no necesita explicación. Parámetro orderInCategory le permite establecer su propio orden de visualización de los elementos del menú. Supongamos que ha creado cinco elementos de menú, pero aún no ha decidido el orden en el que aparecen en la pantalla. Para no mover constantemente bloques completos de código para elementos de menú en el orden deseado, puede utilizar este parámetro.

Y finalmente, un atributo importante aplicación: showAsAction define el comportamiento del menú en Barra de acciones... Sentido Nunca significa que el elemento del menú no debe aparecer en el encabezado, sino solo en el menú emergente, es decir, estar detrás de tres puntos. Si establece el valor siempre luego el artículo Ajustes aparecerá inmediatamente en el encabezado de su aplicación. También valores disponibles ifRooms, withText y collapseActionView... Inténtalo tú mismo. Por ejemplo, ifRoom muestra un elemento de menú si el espacio lo permite. Si hay muchos puntos, solo se interpondrán en el camino. Como regla general, esta opción muestra una palabra o un icono muy corto para operaciones frecuentes con el fin de evitar hacer clic innecesario en tres puntos.

Presta atención al atributo aplicación: showAsAction que pertenece al espacio de nombres xmlns: app = "http://schemas.android.com/apk/res-auto"... Hubo un momento en que ese espacio de nombres no existía y los proyectos usaban el atributo android: showAsAction desde el espacio de nombres estándar. Si el estudio se queja de un error, edite el código.

Hasta que los elementos del menú hagan un trabajo útil. Cualquier clic en el elemento simplemente cierra el menú sin consecuencias visibles. Todavía no hemos escrito ningún código para manejar los clics.

Seleccionar elementos del menú

Hemos aprendido a crear un menú. Pero hasta ahora es inútil, ya que los elementos del menú no reaccionan de ninguna manera a nuestros clics. Se utiliza un método diferente para procesar los clics en los elementos del menú. onOptionsItemSelected ()... Agreguemos un método de la misma manera que en el ejemplo anterior. Dejemos un espacio en blanco.

@Override public boolean onOptionsItemSelected (elemento MenuItem) (return super.onOptionsItemSelected (elemento);)

Parámetro artículo responsable del elemento del menú. Debería obtener la ID del menú a través del método getItemId () y proporcione un código para ello. Dado que el menú generalmente consta de varios elementos, es conveniente utilizar las construcciones si / si no o cambiar... Para mostrar información, usaremos una etiqueta de texto. Agregar un componente a la pantalla de actividad Vista de texto... Puede utilizar el existente Vista de texto con la etiqueta "¡Hola mundo!", solo dale una identificación.

android: id = "@ + id / textView" android: layout_width = "wrap_content" android: layout_height = "wrap_content" android: text = "¡Hola mundo!" />

Agreguemos el código a la plantilla para el elemento de menú seleccionado:

@Override public boolean onOptionsItemSelected (elemento MenuItem) (// obtiene el identificador del elemento de menú seleccionado int id = item.getItemId (); TextView infoTextView = (TextView) findViewById (R.id.textView); // Operaciones para el elemento seleccionado elemento de menú switch (id) (case R.id.action_cat1: infoTextView.setText ("¡Has elegido un gato!"); return true; case R.id.action_cat2: infoTextView.setText ("¡Has elegido un gato!" ); return true; case R. id.action_cat3: infoTextView.setText ("¡Has seleccionado un gatito!"); return true; default: return super.onOptionsItemSelected (item);))

Ejecute la aplicación, abra el menú y seleccione cualquier elemento del menú. Debería aparecer un mensaje en el cuadro de texto.

Existe manera alternativa a través de XML, similar al manejo de clics en botones (desde Android 3.0). Puedes agregar el atributo android: onClick en los recursos del menú y no es necesario utilizar una llamada a un método onOptionsItemSelected ()... Con ayuda android: onClick puede especificar el método deseado al seleccionar un elemento del menú. Agregar atributo dado al artículo Ajustes

Ahora, en el código de la actividad, escribamos lo siguiente:

// el atributo del elemento del menú Configuración se establece en android: onClick = "onSettingsMenuClick" public void onSettingsMenuClick (elemento MenuItem) (TextView infoTextView = (TextView) findViewById (R.id.textView); infoTextView.setText ("Seleccionaste el elemento Configuración , mejor elegiría un gato ");)

Interruptores

Puede cambiar la apariencia de los elementos del menú a una vista de botón de opción. Para hacer esto, necesitas agregar el elemento grupo con atributo android: checkableBehavior = "single":

No veo mucho sentido en este modo. Y no lo consideraremos.

Modo de diseño

Android Studio 2.2 agregó un modo de construcción de menú gráfico, que es similar a una barra de herramientas para agregar nuevos componentes a la pantalla. La barra de menú consta de cuatro elementos: Opción del menú, Artículo de búsqueda , Menú, Grupo.

El principio es el mismo, tu eliges elemento requerido y arrástrelo a la pantalla hasta el área del menú. Si ha buscado crear menús manualmente, entonces Por aquí no le causará ninguna dificultad. Le permite esbozar rápidamente una estructura de menú y luego modificarla manualmente.