8

现在我正在尝试将新设计支持库(22.2.1)中的 DrawerLayout/NavigationView 实现到我的应用程序中。我已经在互联网上搜索过,尤其是在 stackoverflow 上如何将 MenuItem 添加到具有图标和标题的子菜单中。我知道可以添加带有标题图标的菜单项。

像那样:

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

但这只是一个带有标题的菜单项,没有图标。是否可以添加带有标题图标的 MenuItem?

4

4 回答 4

20

首先从 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
于 2015-12-23T02:36:18.173 回答
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

于 2015-07-24T20:40:39.883 回答
2

要以语法方式添加带有图标的菜单项,您需要首先添加带有 id 和标题的菜单,使用此

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

在此之后使用 id 和 setIcon 获取此项目。

 menu.findItem( menuItemId ).setIcon( R.drawable.ic_add_black );
于 2015-11-19T05:53:24.280 回答
0

我找到了更改导航视图的更简单方法(同时使用子菜单和菜单)。NavigationView您可以在运行时使用 2 行代码重新膨胀。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

于 2015-10-12T03:21:18.450 回答