¿Cómo desmarcar los elementos seleccionados en la vista de navegación?

Sé que es posible resaltar un elemento de vista de navegación llamando a setCheckedItem() o devolver el valor verdadero en onNavigationItemSelected para mostrar el elemento como el elemento seleccionado, pero ¿Cómo puedo desmarcar los elementos onNavigationItemSelected de una vista de navegación?

Esto desmarcará todos los elementos

  int size = mNavigationView.getMenu().size(); for (int i = 0; i < size; i++) { mNavigationView.getMenu().getItem(i).setChecked(false); } 

Vi @arsent solución y le dio un intento, y de hecho hará lo que quieras, que es para desmarcar todos los elementos … pero, estaba teniendo un problema en el siguiente escenario:

  1. Seleccione la opción de menú 1 (usando NavigationView#setCheckedItem )
  2. Deseleccionar todos los elementos según la solución de @ arsent
  3. Vuelva a seleccionar el elemento de menú 1 (utilizando NavigationView#setCheckedItem )

En este escenario, el elemento 1 no se marcará como marcado. Esto se debe a que internamente la vista de navegación mantiene un seguimiento del elemento seleccionado previamente en el paso 1, que no cambia en el paso 2, y simplemente salta el paso 3 porque el elemento seleccionado anteriormente es el mismo que el que estamos seleccionando ahora.

Mi sugerencia (y una solución alternativa) para evitar esto es simplemente tener un elemento ficticio invisible y usar NavigationView#setCheckedItem para seleccionar ese elemento siempre que quieras NavigationView#setCheckedItem selección de todo, como por ejemplo

 <item android:id="@+id/menu_none" android:title="" android:visible="false"/> 

Para desmarcar todo solo hazlo

 mNavigationView.setCheckedItem(R.id.menu_none); 

Para desmarcar todos los elementos de SubMenu incluidos los elementos de SubMenu , debe utilizar la recursión:

  private void unCheckAllMenuItems(@NonNull final Menu menu) { int size = menu.size(); for (int i = 0; i < size; i++) { final MenuItem item = menu.getItem(i); if(item.hasSubMenu()) { // Un check sub menu items unCheckAllMenuItems(item.getSubMenu()); } else { item.setChecked(false); } } } 

Llame al método anterior para desmarcar todos los elementos, como a continuación –

 unCheckAllMenuItems(navigationView.getMenu()); 

Las soluciones de Joao no funcionaron para mí como totalmente esperado. Esto conduciría a un espacio en blanco de la vista de elemento sin marcar en mi Navegación.

Sólo asegúrese de establecer la vista como desaparecido:

 <item android:id="@+id/your_menu_item_id_to_hide" android:title="" android:visible="false"/> bottomNavigationView.getMenu().findItem(R.id.your_menu_item_id_to_hide).setChecked(true); bottomNavigationView.findViewById(R.id.your_menu_item_id_to_hide).setVisibility(View.GONE); 

La solución Arsent no es necesaria en este caso.

Todo lo que necesitas hacer es rodear tus grupos de esta manera:

  <group> <group android:id="@+id/grp1"> <item android:id="@+id/nav_profile" android:icon="@drawable/ic_account_circle_24dp" android:title="@string/profile" /> </group> <group android:id="@+id/grp2"> <item android:id="@+id/nav_settings" android:icon="@drawable/ic_settings_24dp" android:title="@string/settings" /> <item android:id="@+id/nav_help" android:icon="@drawable/topic_help" android:title="@string/help_feedback" /> </group> </group> 

No es necesario hacer bucle de elementos de menú con la sobrecarga añadida!

  • NavigationView y diseño personalizado
  • Cómo agregar vistas personalizadas en el nuevo NavigationView
  • Translúcido StatusBar con el color dinámico ActionBar en Android
  • ¿Cómo puedo abrir mediante programación (mostrar en pantalla) NavigationView
  • Cómo cambiar el tamaño del icono de elemento de menú en NavigationView?
  • ¿Cómo puedo eliminar el relleno superior innecesario de la vista de navegación?
  • Cómo inflar android NavigationView con otro menú dinámicamente durante onClick?
  • agrega onClickListener al encabezado de vista de navegación usando la biblioteca de soporte de diseño de android
  • Uso de NavigationView desde Android Design Support Library
  • Cómo establecer el comportamiento de comprobación compartida en todos los grupos en NavigationView?
  • ¿Cómo puedo cambiar el color del icono de la hamburguesa ActionBar?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.