Intereting Posts
Android OnResume не вызывается при использовании TabHost и LocalActivityManager Не удалось найти «libsupportjni.so» в стиле отладки Java.io.ioexception: open failed: einval (Invalid argument) при сохранении изображения на внешнем хранилище Функция Javascript не вызывается в веб-браузере Android Android: как определить последнее полностью видимое письмо в TextView? Интегрируйте firebase auth с конечными точками облака движка google-приложения Изменить цвет линии EditText и цвет курсора EditText программно для минимального уровня API 14? Как воссоздать или перезагрузить кэшированный Observable, используемый с Retrofit для получения новых данных? Google Checkout недоступен в моей стране, как я могу публиковать платные приложения в GooglePlay? Включите отображение Android, когда кто-то подходит к устройству Подписание сертификата на Android с Robospice Android – Как запустить Google Map в Android-приложении с определенным местоположением, уровнем масштабирования и маркером Исключение исключений GcmPubSub INVALID_PARAMETERS Android Smack chat client MediaPlayer – используйте объем рингтона вместо объема мультимедиа

Динамический добавочный элемент для NavigationView в Android

Я хочу создать NavigationDrawer с возможностью добавления новых элементов (например, приложение Yahoo Weather с добавлением новых городов). У меня работает NavigationDrawer с NavigationView , в меню у меня есть постоянные поля:

  <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> 

Я пытаюсь добавить новый Item этот метод:

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

И я получаю не совсем то, что хочу: результат

Кто-нибудь есть идея, как решить эту проблему? Или почему это происходит? Я не знаю, где и как можно хранить информацию об добавленных элементах. Есть идеи?

Чтобы программно добавить объект, мы можем получить объект меню, используя getMenu() NavigationView а затем мы можем добавить элементы в навигационный ящик, используя этот объект Menu .

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

Используя SubMenu , мы можем добавить в него подраздел и элементы.

 // 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); } 

Для получения дополнительной информации Проверьте TechnoTalkative .

Предположим, у вас есть две группы, group1 и group2. Если вы хотите динамически добавлять элементы в группу 1, вы можете назначить приоритет group2, чтобы сделать его всегда ниже group1. Затем, когда вы добавляете новые элементы в группу 1, он не будет вставлен ниже group2.

Вот пример:

 <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> 

И когда вы добавляете пункты меню в группу 1:

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

Это должно сработать. Я тестировал его в библиотеке Android 23.1.1.