使用Icon和Title将MenuItem添加到NavigationView?

时间:2015-07-24 20:34:41

标签: android menuitem drawerlayout navigationview

现在我正在尝试将新的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?

4 个答案:

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

这是示例应用

https://github.com/chrisbanes/cheesesquare

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