【发布时间】:2012-07-30 07:47:46
【问题描述】:
应该足够简单,但可能不会。
在 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 上的示例,但所有示例都在代码中定义了菜单。
那么,有没有人设法让 actionbarsherlock 菜单与基于 XML 文件的布局一起使用?
【问题讨论】:
标签: android menu android-actionbar actionbarsherlock backwards-compatibility