Recurso de menú
Organiza tus páginas con colecciones
Guarda y categoriza el contenido según tus preferencias.
Un recurso de menú define un menú de aplicación (Menú de opciones, Menú contextual o submenú) que se puede completar con MenuInflater
.
Consulta la guía para desarrolladores Menús y obtén más información sobre cómo usarlos.
- ubicación del archivo:
res/menu/filename.xml
Se utilizará el nombre de archivo como ID de recurso.
- tipo de datos de recursos compilados:
- Puntero de recurso a un recurso
Menu
(o de subclase).
- referencia del recurso:
-
En Java:
R.menu.filename
En XML: @[package:]menu.filename
- sintaxis:
-
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@[+][package:]id/resource_name"
android:title="string"
android:titleCondensed="string"
android:icon="@[package:]drawable/drawable_resource_name"
android:onClick="method name"
android:showAsAction=["ifRoom" | "never" | "withText" | "always" | "collapseActionView"]
android:actionLayout="@[package:]layout/layout_resource_name"
android:actionViewClass="class name"
android:actionProviderClass="class name"
android:alphabeticShortcut="string"
android:alphabeticModifiers=["META" | "CTRL" | "ALT" | "SHIFT" | "SYM" | "FUNCTION"]
android:numericShortcut="string"
android:numericModifiers=["META" | "CTRL" | "ALT" | "SHIFT" | "SYM" | "FUNCTION"]
android:checkable=["true" | "false"]
android:visible=["true" | "false"]
android:enabled=["true" | "false"]
android:menuCategory=["container" | "system" | "secondary" | "alternative"]
android:orderInCategory="integer" />
<group android:id="@[+][package:]id/resource name"
android:checkableBehavior=["none" | "all" | "single"]
android:visible=["true" | "false"]
android:enabled=["true" | "false"]
android:menuCategory=["container" | "system" | "secondary" | "alternative"]
android:orderInCategory="integer" >
<item />
</group>
<item >
<menu>
<item />
</menu>
</item>
</menu>
- elementos:
-
- Obligatorio. Este debe ser el nodo raíz. Contiene elementos
<item>
o <group>
.
atributos:
xmlns:android
- Espacio de nombres XML. Obligatorio. Define el espacio de nombres XML, que debe ser
"http://schemas.android.com/apk/res/android"
.
<item>
- Es un elemento del menú. Puede contener un elemento
<menu>
(para un submenú). Debe ser un elemento secundario de un elemento <menu>
o <group>
.
atributos:
android:id
- ID de recurso. Es un ID único de recurso. Si quieres crear un nuevo ID de recurso para este elemento, utiliza la forma:
"@+id/name"
. El símbolo + indica que debe crearse como un ID nuevo.
android:title
- Recurso de strings. Es el título de menú que funciona como un recurso de strings o una string sin procesar.
android:titleCondensed
- Recurso de strings. Es un título condensado que funciona como un recurso de strings o una string sin procesar. Se usa este título en aquellas situaciones en las que el título normal es demasiado largo.
android:icon
- Recurso de elemento de diseño. Es una imagen que se utilizará como ícono del elemento de menú.
android:onClick
- Nombre del método. Es el método para llamar cuando se hace clic en este elemento de menú. El método debe declararse en la actividad como público y aceptar un
MenuItem
como su único parámetro, que indica el elemento en el que se hizo clic. Este método tiene prioridad sobre la devolución de llamada estándar a onOptionsItemSelected()
. Mira el ejemplo al final.
Advertencia: Si ofuscas tu código con ProGuard (o una herramienta similar), asegúrate de excluir el método que especifiques en este atributo, ya que puede romper la funcionalidad.
Se introdujo en el nivel de API 11.
android:showAsAction
- Palabra clave. Corresponde a cuándo y cómo debería aparecer este elemento como uno de acción en la barra de la app. Un elemento de menú puede aparecer como un elemento de acción solo cuando la actividad incluye una barra de la app. Valores válidos:
Valor | Descripción |
ifRoom | Solo coloca este elemento en la barra de la app si hay espacio. Si no hay lugar para todos los elementos marcados como "ifRoom" , se muestran como acciones los elementos que tengan los valores orderInCategory más bajos; los restantes aparecerán en el menú ampliado. |
withText | Incluye también el texto del título (definido por android:title ) con el elemento de acción. Puedes incluir este valor junto con uno de los otros marcadores separándolos con un canal | . |
never | Nunca coloques este elemento en la barra de la app. En su lugar, enumera el elemento en el menú ampliado de la barra de la app. |
always | Siempre coloca este elemento en la barra de la app.
Evita usar esta opción a menos que sea esencial que el elemento siempre aparezca en la barra de acción. Configurar varios elementos para que siempre aparezcan como elementos de acción puede hacer que se superpongan con otra IU en la barra de la app. |
collapseActionView | Es posible contraer la vista de acción asociada a este elemento de acción (declarada por android:actionLayout o android:actionViewClass ). Se introdujo esta opción en el nivel de API 14. |
Consulta la clase de capacitación Cómo agregar la barra de la app para obtener más información.
Se introdujo en el nivel de API 11.
android:actionLayout
- Recurso de diseño. Es un diseño para usar como vista de acción.
Consulta Vistas de acción y proveedores de acción para obtener más información.
Se introdujo en el nivel de API 11.
android:actionViewClass
- Nombre de clase. Es un nombre de clase completo para que
View
use como vista de acción. Por ejemplo, "android.widget.SearchView"
para usar SearchView
como vista de acción.
Consulta Vistas de acción y proveedores de acción para obtener más información.
Advertencia: Si ofuscas tu código usando ProGuard (o una herramienta similar), asegúrate de excluir la clase que especifiques en este atributo del cambio de nombre, ya que puede romper la funcionalidad.
Se introdujo en el nivel de API 11.
android:actionProviderClass
- Nombre de clase. Es un nombre de clase completo para que
ActionProvider
use en lugar del elemento de acción. Por ejemplo, "android.widget.ShareActionProvider"
para usar ShareActionProvider
.
Consulta Vistas de acción y proveedores de acción para obtener más información.
Advertencia: Si ofuscas tu código usando ProGuard (o una herramienta similar), asegúrate de excluir la clase que especifiques en este atributo del cambio de nombre, ya que puede romper la funcionalidad.
Se introdujo en el nivel de API 14.
android:alphabeticShortcut
- Char. Es un carácter para la combinación de teclas alfabéticas.
android:numericShortcut
- Entero. Es un número para la combinación de teclas numéricas.
android:alphabeticModifiers
- Palabra clave. Es un modificador para la combinación de teclas alfabéticas del elemento de menú. El valor predeterminado corresponde a la tecla Control. Valores válidos:
Valor | Descripción |
META |
Corresponde a la tecla meta Meta |
CTRL |
Corresponde a la tecla meta Control |
ALT |
Corresponde a la tecla meta Alt |
MAYÚSCULA |
Corresponde a la tecla meta Mayúscula |
SYM |
Corresponde a la tecla meta Sym |
FUNCIÓN |
Corresponde a la tecla meta Función |
Nota: Puedes especificar varias palabras clave en un atributo. Por ejemplo, android:alphabeticModifiers="CTRL|SHIFT"
indica que, para activar el elemento de menú correspondiente, el usuario tiene que presionar las teclas meta Control y Mayúscula junto con la combinación de teclas.
Puedes usar el método setAlphabeticShortcut()
para configurar los valores de los atributos de manera programática. Para obtener más información sobre el atributo alphabeticModifier
, ve a alphabeticModifiers
.
android:numericModifiers
- Palabra clave. Un modificador para la combinación de teclas numéricas del elemento de menú.
El valor predeterminado corresponde a la tecla Control. Valores válidos:
Valor | Descripción |
META |
Corresponde a la tecla meta Meta |
CTRL |
Corresponde a la tecla meta Control |
ALT |
Corresponde a la tecla meta Alt |
MAYÚSCULA |
Corresponde a la tecla meta Mayúscula |
SYM |
Corresponde a la tecla meta Sym |
FUNCIÓN |
Corresponde a la tecla meta Función |
Nota: Puedes especificar varias palabras clave en un atributo. Por ejemplo, android:numericModifiers="CTRL|SHIFT"
indica que, para activar el elemento de menú correspondiente, el usuario tiene que presionar las teclas meta Control y Mayúscula junto con la combinación de teclas.
Puedes usar el método setNumericShortcut()
para configurar los valores de los atributos de manera programática. Para obtener más información sobre el atributo numericModifier
, ve a numericModifiers
.
android:checkable
- Booleano. Es "true" si se puede marcar el elemento.
android:checked
- Booleano. Es "verdadero" si el elemento está marcado de forma predeterminada.
android:visible
- Booleano. Es "verdadero" si el elemento es visible de forma predeterminada.
android:enabled
- Booleano. Es "verdadero" si el elemento está habilitado de forma predeterminada.
android:menuCategory
- Palabra clave. Es el valor correspondiente a las constantes
Menu
CATEGORY_*
, que definen la prioridad del elemento. Valores válidos:
Valor | Descripción |
container | Para elementos que son parte de un contenedor |
system | Para elementos proporcionados por el sistema |
secondary | Para elementos que corresponden a opciones secundarias (poco utilizadas) proporcionadas por el usuario |
alternative | Para elementos que corresponden a acciones alternativas en los datos que se muestran en el momento |
android:orderInCategory
- Entero. Es el orden de "importancia" del elemento dentro de un grupo.
<group>
- Es un grupo de menús (para crear una colección de elementos que comparten características, como el hecho de ser visibles, o de estar habilitados o marcados). Contiene uno o más elementos
<item>
. Tiene que ser un elemento secundario de un elemento <menu>
.
atributos:
android:id
- ID de recurso. Es un ID único de recurso. Si quieres crear un nuevo ID de recurso para este elemento, utiliza la forma:
"@+id/name"
. El símbolo + indica que debe crearse como un ID nuevo.
android:checkableBehavior
- Palabra clave. Es el tipo de comportamiento de marcado para el grupo. Valores válidos:
Valor | Descripción |
none | No se puede marcar |
all | Se pueden marcar todos los elementos (usar casillas de verificación) |
single | Solo se puede marcar un elemento (usar botones de selección) |
android:visible
- Booleano. Es "verdadero" si el grupo es visible.
android:enabled
- Booleano. Es "verdadero" si el grupo está habilitado.
android:menuCategory
- Palabra clave. Es el valor correspondiente a las constantes
Menu
CATEGORY_*
, que definen la prioridad del grupo. Valores válidos:
Valor | Descripción |
container | Para grupos que forman parte de un contenedor |
system | Para grupos proporcionados por el sistema |
secondary | Para grupos integrados por opciones secundarias (poco utilizadas) que proporciona el usuario |
alternative | Para los grupos integrados por acciones alternativas en los datos que se muestran en un momento |
android:orderInCategory
- Entero. Es el orden predeterminado de los elementos dentro de la categoría.
- ejemplo:
- Archivo en formato XML guardado en
res/menu/example_menu.xml
:
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item android:id="@+id/item1"
android:title="@string/item1"
android:icon="@drawable/group_item1_icon"
app:showAsAction="ifRoom|withText"/>
<group android:id="@+id/group">
<item android:id="@+id/group_item1"
android:onClick="onGroupItemClick"
android:title="@string/group_item1"
android:icon="@drawable/group_item1_icon" />
<item android:id="@+id/group_item2"
android:onClick="onGroupItemClick"
android:title="@string/group_item2"
android:icon="@drawable/group_item2_icon" />
</group>
<item android:id="@+id/submenu"
android:title="@string/submenu_title"
app:showAsAction="ifRoom|withText" >
<menu>
<item android:id="@+id/submenu_item1"
android:title="@string/submenu_item1" />
</menu>
</item>
</menu>
El siguiente código de la aplicación completa el menú de la devolución de llamada de onCreateOptionsMenu(Menu)
y también declara la devolución de llamada al hacer clic para dos de los elementos:
Kotlin
override fun onCreateOptionsMenu(menu: Menu): Boolean {
menuInflater.inflate(R.menu.example_menu, menu)
return true
}
fun onGroupItemClick(item: MenuItem) {
// One of the group items (using the onClick attribute) was clicked
// The item parameter passed here indicates which item it is
// All other menu item clicks are handled by <code><a href="/reference/android/app/Activity.html#onOptionsItemSelected(android.view.MenuItem)">onOptionsItemSelected()</a></code>
}
Java
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.example_menu, menu);
return true;
}
public void onGroupItemClick(MenuItem item) {
// One of the group items (using the onClick attribute) was clicked
// The item parameter passed here indicates which item it is
// All other menu item clicks are handled by <code><a href="/reference/android/app/Activity.html#onOptionsItemSelected(android.view.MenuItem)">onOptionsItemSelected()</a></code>
}
El contenido y las muestras de código que aparecen en esta página están sujetas a las licencias que se describen en la Licencia de Contenido. Java y OpenJDK son marcas registradas de Oracle o sus afiliados.
Última actualización: 2022-09-08 (UTC)
[{
"type": "thumb-down",
"id": "missingTheInformationINeed",
"label":"Falta la información que necesito"
},{
"type": "thumb-down",
"id": "tooComplicatedTooManySteps",
"label":"Muy complicado o demasiados pasos"
},{
"type": "thumb-down",
"id": "outOfDate",
"label":"Desactualizado"
},{
"type": "thumb-down",
"id": "translationIssue",
"label":"Problema de traducción"
},{
"type": "thumb-down",
"id": "samplesCodeIssue",
"label":"Problema con las muestras o los códigos"
},{
"type": "thumb-down",
"id": "otherDown",
"label":"Otro"
}]
[{
"type": "thumb-up",
"id": "easyToUnderstand",
"label":"Fácil de comprender"
},{
"type": "thumb-up",
"id": "solvedMyProblem",
"label":"Resolvió mi problema"
},{
"type": "thumb-up",
"id": "otherUp",
"label":"Otro"
}]