Intereting Posts
Почему я получил FATAL EXCEPTION, когда я тестировал образец MediaRecorder? AppCompat 21: name = colorPrimary не работает вместе с именем = actionBarStyle Как изменить значок приложения для Android, созданного в Google App Inventor? RelativeLayout "Не удалось разрешить ресурс …" Android Проблемы с javadoc Программно скрыть / показать Android Soft Keyboard Я получаю сообщение об ошибке 'ko: Неверный тип образа кэша кэша: yaffs2 (ожидается ext4)', когда пытался запустить андроид на эмуляторе для устройства mako? Как построить libjpeg для использования ndk Как задать расстояние между рейтинговыми марками звезд android? Как обновить значение столбца базы данных базы данных android sqlite до значения null, используя ContentValues? Как получить layout_weight программно? Android – Как разместить View off-screen? Обновить MusicPlayer SeekBar в сервисе Appium: Элемент не может быть найден с использованием Xpath в гибридных приложениях для Android? Переместить курсор в конец EditText?

Динамический добавочный элемент для 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.