现在我正在尝试将新的Design Support libary(22.2.1)中的DrawerLayout / NavigationView实现到我的应用程序中。我已经在互联网上搜索过,特别是在stackoverflow上如何将MenuItem添加到带有图标和标题的子菜单。我知道可以添加一个标题为或图标的菜单项。
像那样: Menu m = mNavigationView.getMenu();
m.add(R.id.groupID,R.id.menuItemID,orderNumber,"title");
但这只是一个带有标题的MenuItem,没有Icon。 是否可以添加带有标题和图标的MenuItem?
答案 0 :(得分:16)
首先从NavigationView获取菜单:
Menu menu = mNavigationView.getMenu();
然后将您的项目添加到菜单中,记得返回MenuItem,以便稍后添加图标:
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
答案 1 :(得分:3)
创建菜单
<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>
这是示例应用
答案 2 :(得分:2)
要使用图标语法添加菜单项,您需要先使用此
添加带有ID和标题的菜单 menu.add( groupId, menuItemId, Order, "title" );
之后使用id和setIcon获取此项目。
menu.findItem( menuItemId ).setIcon( R.drawable.ic_add_black );
答案 3 :(得分:0)
我找到了更简单的方法来更改导航视图(使用子菜单和菜单)。您可以在运行时使用2行代码重新充气NavigationView
。在此示例中,当用户成功登录时,我会使用new_navigation_drawer_items.xml
重新充气
navigationView.getMenu().clear(); //clear old inflated items.
navigationView.inflateMenu(R.menu.logged_in_navigation_drawer_items); //inflate new items.
当用户退出时,只需使用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.
因此它实际上会重新膨胀项目,但不会向现有项目添加新项目。只需创建自己的menu.xml