15

是否可以轻松地在 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>

我想在其他地方(在另一个活动中)重用这两个选项。而不是重复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>

但我在任何文档中都没有看到类似的东西。是否支持这样的东西,还是我坚持使用片段来限制各种 XML 资源的代码和 XML 复制?(我相信这会起作用,但我还没有使用片段)

4

1 回答 1

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;
}
于 2011-11-18T21:42:00.770 回答