Cómo crear un submenú con botones de radio en Android?
Tengo un problema en un caso simple (al menos, parece así). Necesito crear un submenú para un menú contextual dinámicamente y proporcionar cada elemento con un radiobox. Hice muchos ensayos. Cuando llamo menu.setGroupCheckable(0, true, true)
, donde 0 es por defecto el menú en sí, muestra los botones de radio a la derecha en cada elemento del menú como se espera, pero necesito esto para el submenú. Así que tengo el código siguiente:
SubMenu sub = menu.addSubMenu(R.string.name); int count = 1000; for(String e : someList) { MenuItem item = sub.add(1, count, count, e); count++; } menu.setGroupCheckable(1, true, true);
En este caso no veo ni radioboxes ni cuadros de verificación en el submenú. Entonces escribí el código siguiente:
- Persistencia de un menú de contexto tras la rotación de la pantalla
- El lanzamiento de un cuadro de diálogo "No se puede agregar ventana - símbolo nulo no es para una aplicación" con getApplication () como contexto
- Cómo crear un menú contextual con un archivo XML?
- Obtener la posición de fila en onCreateContextMenu
- Android: Menú contextual en un solo clic
SubMenu sub = menu.addSubMenu(R.string.name); int count = 1000; for(String e : someList) { MenuItem item = sub.add(1, count, count, e); item.setCheckable(true); count++; } menu.setGroupCheckable(1, true, true);
Esto hace que el submenú tenga una casilla de verificación en cada ítem, y las casillas de verificación funcionen exclusivamente, pero quiero radioboxes, porque se ven más intuitivamente para la selección exclusiva.
Entonces, ¿cómo puede lograrse esto?
- Obtener la identificación de la vista de oncontextitemselected
- Android Studio: No se puede escribir en Preferencias compartidas en la prueba instrumentada
- ContextMenu no aparece en el clic largo
- El menú de contexto de verificación de Android no se recuerda marcado
Establecer el checkableBehavior en xml a solo. Aquí está un código:
<menu> <group android:id="@+id/group" android:checkableBehavior="single"> <item android:id="@+id/menu_sort_by_name" android:title="@string/action_sort_by_name"/> <item android:id="@+id/menu_sort_by_last_edit" android:title="@string/action_sort_by_last_edit"/> </group> </menu>
Me enteré de que los grupos de menús y submenús se procesan por separado, que es un grupo formado en un submenú, debe ser dirigido a través del submenú, no a través del menú de nivel superior. Así que la solución es llamar:
sub.setGroupCheckable(1, true, true);
Este código funciona como se espera, es decir elementos en el submenú mostrar radiobuttons en lugar de checkboxes.