应该足够简单,但可能不是。
在 Android 3.0+ 中使用操作栏时,您可以选择在 XML 或代码中定义菜单项。我更喜欢在 xml 中对它们进行编码,因为操作栏感觉更多基于 UI 而不是功能。
平均一天,您会使用它来将 xml 扩展为菜单
@Override
public boolean onCreateOptionsMenu(Menu menu)
{
// Menu is defined inside 'res/menu/...xml
getMenuInflater().inflate(R.menu.activity_home, menu);
return true;
}
你的 XML 文件看起来像这样
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:id="@+id/menu_settings"
android:orderInCategory="100"
android:showAsAction="never"
android:title="@string/menu_settings"/>
<item
android:id="@+id/menu_item_menu"
android:icon="@drawable/menu_off_128"
android:showAsAction="ifRoom|withText"
android:title="@string/inbox_string"/>
<item
android:id="@+id/menu_item_gallery"
android:icon="@drawable/gallery_off_128"
android:showAsAction="ifRoom|withText"
android:title="@string/gallery_string"/>
<item
android:id="@+id/menu_item_inbox"
android:icon="@drawable/inbox_off_128"
android:showAsAction="ifRoom|withText"
android:title="@string/inbox_string"/>
<item
android:id="@+id/menu_item_contact"
android:icon="@drawable/phone_off_128"
android:showAsAction="ifRoom|withText"
android:title="@string/contact_string"/>
</menu>
现在,我面临着使 actionbar 向后兼容的问题,而 actionbarsherlock 似乎是最令人愉快的使用和流行的。所以我用 actionbarsherlock 尝试了上述方法,遗憾的是存在编译时问题。
也就是说,inflater 返回的 Menu 类来自“Android.view.menu”,而不是“com.actionbarsherlock.menu”。我浏览了 github 上的示例,但所有示例都在代码中定义了菜单。
那么有没有人设法获得一个使用基于 XML 文件的布局的 actionbarsherlock 菜单?