2015-07-24 16 views
5

W tej chwili próbuję zaimplementować DrawerLayout/NavigationView z nowej biblioteki Design Support (22.2.1) do mojej aplikacji. Już szukałem w Internecie, a szczególnie na stackoverflow, jak dodać MenuItem do Submenu z ikoną i tytułem. Wiem, że możliwe jest dodanie menuitem z ikoną tytułu lub.Dodaj MenuItem do NavigationView z ikoną i tytułem?

tak:

 Menu m = mNavigationView.getMenu(); 
     m.add(R.id.groupID,R.id.menuItemID,orderNumber,"title"); 

Ale to jest tylko MenuItem z tytułu, bez Icon. Czy można dodać element menu o tytule i Ikona? menu

+0

OK Możesz łatwo dodać tytuł i ikonę przy użyciu xml jak podana odpowiedź. Ale jeśli dodajesz go dynamicznie, to obecnie jest to błąd w bibliotece wsparcia projektu ... http://stackoverflow.com/a/30706233/3544839 – Moinkhan

+0

hey Moinkhan, w twoim linku stackoverflow nie ma nic wspominanego o możliwości dodania MenuItem z ikoną i tytułem. Więc nie jest możliwe programistyczne dodawanie SubmenuItems z ikoną i tytułem? – pimato

+0

Jeśli nie można dodać pozycji menu, nie jest możliwe dodanie podmenu również. Ale ten błąd jest oznaczony jako przyszłe wydanie .. tak, jest to możliwe w przyszłej bibliotece .... na razie nie jest to możliwe programowo .. – Moinkhan

Odpowiedz

3

utworzyć

<menu xmlns:android="http://schemas.android.com/apk/res/android"> 

<item 
    android:id="@+id/nav_home" 
    android:icon="@drawable/ic_dashboard" 
    android:title="Home" /> 

<item android:title="Sub items"> 
    <menu> 
     <item 
      android:icon="@drawable/ic_dashboard" 
      android:title="Sub item 1" /> 
     <item 
      android:icon="@drawable/ic_forum" 
      android:title="Sub item 2" /> 
    </menu> 
</item> 
</menu> 

tutaj jest próbką APP

https://github.com/chrisbanes/cheesesquare

+2

Przepraszam Nigdy nie wspominałem, że chcę to zrobić programowo. Właśnie dlatego wysłałem kod Javy. – pimato

+0

Ale jak dodać ikonę dla elementów podrzędnych, zamiast każdego elementu menu? – worked

0

znalazłem łatwiejszy sposób, aby zmienić widok nawigacji (praca zarówno z menu i menu). Możesz ponownie przepompować NavigationView w czasie wykonywania za pomocą 2 linii kodu. W tym przykładzie ponownie nadmuchać z new_navigation_drawer_items.xml gdy użytkownik pomyślnie zalogowanego

navigationView.getMenu().clear(); //clear old inflated items. 
navigationView.inflateMenu(R.menu.logged_in_navigation_drawer_items); //inflate new items. 

Gdy użytkownik wyloguje się tylko raz ponownie nadmuchać z logged_out_navigation_drawer_items.xml

navigationView.getMenu().clear(); //clear old inflated items. 
navigationView.inflateMenu(R.menu.logged_out_navigation_drawer_items); //inflate new items. 

więc faktycznie ponownie nadmuchać przedmiotów, ale nie dodawać nowe przedmioty, które istniały. Wystarczy stworzyć własny menu.xml

2

Aby dodać element menu z ikoną gramatycznie, trzeba najpierw dodać menu z identyfikatorem i tytuł, przy użyciu tej

menu.add(groupId, menuItemId, Order, "title"); 

po tym dostać ten element za pomocą identyfikatora i setIcon .

menu.findItem(menuItemId).setIcon(R.drawable.ic_add_black); 
9

Pierwszy uzyskać menu z NavigationView:

Menu menu = mNavigationView.getMenu(); 

następnie dodaj swój przedmiot do menu, pamiętaj, aby uzyskać zwrot MENUITEM więc można dodać ikonę nowszym:

MenuItem item = menu.add(groupId, menuItemId, Order, "Menu Item 1 Title"); 
item.setIcon(R.drawable.ic_some_menu_item_icon); // add icon with drawable resource 
+0

Ten kod działa. Programiści mogą się zdezorientować, gdy nie znajdą żadnej metody w Menu, która mówi o dodawaniu String i Drawable. Ale metoda menu.add zwraca MenuItem, który pozwala ustawić Icon i inne właściwości. – Prashant

Powiązane problemy