studio example customize component android navigation-drawer android-menu

example - navigationview android



Agregando elemento dinĂ¡mico a NavigationView en Android (2)

Para agregar el elemento mediante programación, podemos obtener un objeto de menú utilizando el método getMenu() de NavigationView y luego podemos agregar elementos en el cajón de navegación utilizando ese objeto de Menu .

final Menu menu = navigationView.getMenu(); for (int i = 1; i <= 3; i++) { menu.add("Runtime item "+ i); }

Usando SubMenu , podemos agregar una subsección y elementos en él.

// adding a section and items into it final SubMenu subMenu = menu.addSubMenu("SubMenu Title"); for (int i = 1; i <= 2; i++) { subMenu.add("SubMenu Item " + i); }

Para más detalles consultar tecnotécnica .

EDITAR: Si desea interactuar con el menú, use
menu.add(0, itemId, 0, title); y entonces

public boolean onNavigationItemSelected(MenuItem item) { // Handle navigation view item clicks here. int id = item.getItemId();

ID te dará el itemId asignado

Quiero crear NavigationDrawer con la posibilidad de agregar nuevos elementos (como la aplicación yahoo weather con la adición de nuevas ciudades). He trabajado NavigationDrawer con NavigationView , en el menú Tengo campos permanentes:

<group android:id="@+id/group" android:checkableBehavior="single"> <item android:checked="false" android:id="@+id/item1" android:icon="@drawable/ic_inbox_black_24dp" android:title="Item1" /> <item android:checked="false" android:id="@+id/Item2" android:icon="@drawable/ic_inbox_black_24dp" android:title="Item2" /> </group>

Estoy tratando de agregar nuevo artículo este método:

public boolean addNewItem(String itemName){ Menu menu = navigationView.getMenu(); menu.add(R.id.group,Menu.NONE,Menu.NONE,itemName); return true; }

Y no estoy obteniendo exactamente lo que quiero:

¿Alguien tiene una idea de cómo resolver este problema? ¿O por qué está sucediendo esto? No sé dónde y cómo se puede mantener información sobre los elementos agregados. ¿Algunas ideas?


Supongamos que tiene dos grupos, grupo1 y grupo2. Si desea agregar elementos dinámicamente al grupo1, puede asignar prioridad al grupo2 para que esté siempre debajo del grupo1. Luego, cuando agrega nuevos elementos al grupo1, no se insertará debajo del grupo2.

Aquí hay una muestra:

<group android:id="@+id/group1" /> <group android:id="@+id/group2" android:orderInCategory="999"> <item android:checked="false" android:id="@+id/item1" android:icon="@drawable/ic_inbox_black_24dp" android:title="Item1" /> <item android:checked="false" android:id="@+id/Item2" android:icon="@drawable/ic_inbox_black_24dp" android:title="Item2" /> </group>

Y cuando agrega elementos de menú a group1:

Menu menu = navigationView.getMenu(); menu.add(R.id.group1,Menu.NONE,Menu.NONE,itemName);

Esto debería funcionar. Lo probé en la librería de diseño de Android 23.1.1.