Quiero añadir un menú desplegable, menú de opciones... En Android Java. No sé que tipo de menú, listado, es el adecuado.
En concreto quiero que al pulsar una imagen, se abra un menú hacia abajo con un listado de opciones.
De momento opté por algo sencillo. Cargo una url con un archivo html de configuración. Pero sería más cómodo, estético, ligero y eficiente para el usuario final un menú desplegable con una scrollbar. De tal forma que el usuario vea por ejemplo 4 opciones y, pueda desplazarse por el resto de opciones arrastrando.
...
Lo entendería mejor con una imagen.... pero creo captar tu intención.
Podrías optar por algo similar a un menú tipo pulldown, pero que en vez de desplegar una lista vertical con cada submenú, despliegue una línea y solo cuando sea terminal despliegue como lista vertical...
Para ello, exige diseñar primero el menú en formato árbol... para verlo claro.
Déjame que use el menú que tiene la calculadora de windows, que para ejemplos es bastante práctico.
Primero los nodos raíz (nota que esto es el diseño del contenido del menú, no la interfaz gráfica)
Edit
View
Ayuda
Ahora indenta cada submenú bajo cada uno.
-----------------------------
Edit
Copy
Paste
View
Standard
Scientific
-
Hex
Decimal
Octal
Binary
-
Qword
Dword
Word
Byte
-
Digit Grouping
Help
Help Calculator
-
About Calculator
-------------------------------
Básicamente este es el menú, hay diferencias en 'View', cuando está activo Decimal, se muestran grados, radianes, en vez del tamaño de bytes... pero para el ejemplo basta así.
Lo primero es ver que cuando hay diferentes aparatados, como en 'View', con separadores, en realidad pueden reconvertirse en la forma:
------------------------
View
Model
Standard
Scientific
Base Number
Hex
Decimal
Octal
Binary
Data Size
Qword
Dword
Word
Byte
Digit Grouping
-------------------------
Bien, pués la forma visual del menú, la interfaz grafica final podría ser:
---------------------------------
|(☆) Edit, View, Help
---------------------------------
Si pulsa en Edit
---------------------------------
|(☆)
Edit, View, Help
---------------------------------
| - Copy
| - Paste
---------------------------------
Copy y paste son ya 'hojas' que conllevan realizar la acción... se muestran por tanto en formato vertical alineados a la izquierda.
Si pulsa en View:
---------------------------------
|(☆) Edit,
View, Help
| - |(☆) Model, Base Number, Data Size
---------------------------------
| - Digit Grouping
---------------------------------
Pulsar en nodos solo despliega su lista, que puede contener también hojas terminales, caso de 'Digit Grouping'.
si se pulsa (por ejemplo) en el submenú Model...
---------------------------------
|(☆) Edit,
View, Help
| - |(☆)
Model, Base Number, Data Size
---------------------------------
| - * Standard
| - Scientific
---------------------------------
Despliega su sumenú, como son terminales se colocan en lista vertical
El asterisco '*' reprensenta que está marcada esa opción.
si se pulsa (por ejemplo) en el submenú Base Number...
---------------------------------
|(☆) Edit,
View, Help
| - |(☆) Model,
Base Number, Data Size
---------------------------------
| - * Hex
| - Decimal
| - Octal
| - Binary
---------------------------------
En fin el esquema es claro... como un teléfono tiene patalla muy pequeña, y para ser legible el texto debe ser grande, no cabe desplegar un submenú y otro y otro y otro... pero todavía puede admitir 3-4 líneas y debajo media docena de opciones o alguna más (dependerá del tamaño de fuente, etc...).
Así cada rama desplegada, se muestra como una línea ligeramente indentada de su ascendiente, y subrayado el nodo del que desciende...
Y los nodos terminales que ejecutan la acción en cambio se colocan alineados a la izquierda en vertical.
Ambos, ramas y terminales separados (en el ejemplo una línea horizontal los separa).
Habrá ramas que además de tener submenús tengan también nodos terminales como sucede con 'View' que tiene 3 submenús y el 4º es un nodo terminal...
---------------------------------
|(☆) MenuA,
MenuB, MenuC, MenuD
| - |(☆)
SubmA, SubMB, SubmC, SubmD
| - | - |(☆) SSubA, SSubB, SSubC,
SSubD | - | - | - |(☆) SSSA, SSSB,
SSSC, SSSD
---------------------------------
| - Blabla A
| - Blabla B
| - * Blabla C
| - * Blabla D
| - BlaBla E
| - * Blabla F
---------------------------------
En este ejemplo está seleccionado:
MenuB --> SubMA --> SSubD --> SSSC
y de ese último se muestran sus acciones terminales.
Igual que en un PC se limita la cantidad de submenús, también habría que limitar en Android el número de submenús, 4 es un límite práctico, pero que todavía tiene flexibilidad para menús muy largos...
Si la lista vertical es muy grande podrías tener un scroll vertical (peor solo mueva esos ítems, que no toque los ítems ancestros.