How to include a common menu item in multiple menu

2019-01-18 17:48发布

Many of menus have always one item same to all.

Is there the way to define that item as extra menu and include it to all other?

Something like this:

menu/main.xml

<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:id="@+id/menu_main"
          android:title="@string/text_mainmenu" />
</menu>

menu/other.xml

<menu xmlns:android="http://schemas.android.com/apk/res/android"
      parent="@menu/main">
    <item android:id="@+id/menu_other"
          android:title="@string/text_othermenu" />
</menu>

I know, that it's possible to do it programmaticaly, but I thought xml-way is nicer.

2条回答
相关推荐>>
2楼-- · 2019-01-18 18:40

AFAIK, <include> only works for layout XML, not menu XML, though you can certainly give it a try. Lacking that, the programmatic option (inflating both menu XML files) is the only option I am aware of.

查看更多
我欲成王,谁敢阻挡
3楼-- · 2019-01-18 18:40

Inflating each menu and calling to super works great! Here is an example:

@Override
public boolean onCreateOptionsMenu(Menu menu) 
{
    super.onCreateOptionsMenu(menu);
    getMenuInflater().inflate(R.menu.main, menu);
    getMenuInflater().inflate(R.menu.other, menu);
    return true;
}

You can control the order if super also adds more items by calling it before/after other inflates, or not call at all it to ignore those items.

查看更多
登录 后发表回答