XML(菜单)资源的继承和扩展

Chr*_*Bye 15 android android-menu

是否可以轻松地在android中继承和扩展XML资源,特别是菜单.

例如.如果我的base_menu.xml是

<menu xmlns:android="http://schemas.android.com/apk/res/android" >

    <item android:id="@+id/item_manual_input"
        android:title="@string/manual_input/">

    <item android:id="@+id/item_logoff"
        android:title="@string/logoff"/>

</menu>
Run Code Online (Sandbox Code Playgroud)

我想在其他地方重复使用这两个选项(在另一个活动中).而不是重复base_menu中的项目的标签,我非常想为inheriting_menu.xml做这样的事情

<menu xmlns:android="http://schemas.android.com/apk/res/android" >

    <menu android:id="@id/base_menu"/>

    <item android:id="@+id/extra_option"
        android:title="@string/extra_option/>

</menu>
Run Code Online (Sandbox Code Playgroud)

但我在任何文档中都没有看到类似的内容.是否有这样的支持,或者我是否坚持使用片段来限制各种XML资源的代码和XML复制?(我相信这会奏效,但我还没有使用碎片)

Jar*_*der 19

不适用于菜单,但可用于布局.
请参阅include标签:https://developer.android.com/training/improving-layouts/reusing-layouts.html

对于菜单:
您可以通过膨胀菜单xml文件并添加单个菜单项来解决代码问题:

@Override public boolean onCreateOptionsMenu(Menu menu)
{
    getMenuInflater().inflate(R.menu.base, menu); // All menus in base.xml
    getMenuInflater().inflate(R.menu.extras, menu); // base.xml + extras.xml
    menu.add("More"); // base.xml + extras.xml + "More"
    return true;
}
Run Code Online (Sandbox Code Playgroud)

  • 上面的链接已经死了,但我发现它[这里](http://developer.android.com/training/improving-layouts/reusing-layouts.html).Romain Guy还有另一篇同样有趣的文章:[http://android-developers.blogspot.co.uk/2009/02/android-layout-tricks-2-reusing-layouts.html](http://android -developers.blogspot.co.uk/2009/02/android-layout-tricks-2-reusing-layouts.html).希望这有助于某人. (4认同)