以编程方式将MenuItem添加到特定位置或组的菜单

inj*_*eer 11 android menuitem android-navigationview

我有一个

<android.support.design.widget.NavigationView
  app:menu="@menu/drawer"
/>
Run Code Online (Sandbox Code Playgroud)

使用以下菜单项:

<item
    android:id="@+id/main_item"
    android:icon="@drawable/ic_menu_main"
    android:title="@string/app_name"/>

<group
    android:id="@+id/some_group"
    android:checkableBehavior="single"/>

<item
    android:id="@+id/teams_item"
    android:icon="@drawable/ic_menu_teams"
    android:title="@string/teams"/>
Run Code Online (Sandbox Code Playgroud)

现在我想some_group在它之下或之下添加一个项目.

我试过了:

MenuItem mi = menu.add( R.id.soume_group, someId, NONE, "some name" );
Run Code Online (Sandbox Code Playgroud)

要么

MenuItem mi = menu.add( R.id.soume_group, someId, 2, "some name" );
Run Code Online (Sandbox Code Playgroud)

但是项目会添加到菜单的底部.

如何解决我的问题?

TIA

k3b*_*k3b 18

您可以使用它orderInCategory来定义订单

    <item
        android:id="@+id/main_item"
        android:icon="@drawable/ic_menu_main"
        android:orderInCategory="100"   
        android:title="@string/app_name"/>

    <item
        android:id="@+id/teams_item"
        android:icon="@drawable/ic_menu_teams"
        android:orderInCategory="1000"      
        android:title="@string/teams"/>
Run Code Online (Sandbox Code Playgroud)

如果你想插入之间main_item,teams_item你可以使用orderInCategory它之间

// 500 is between main_item(100) and teams_item(1000)
MenuItem mi = menu.add( NONE, someId, 500, "some name" ); 
Run Code Online (Sandbox Code Playgroud)