使用appcompat库是否可以拥有一个操作栏菜单?

4

最近我从常规的操作栏实现切换到最近发布的appcompat实现。我的应用程序大量使用操作栏提供功能。自从切换后,在旧版本API(小于11)中没有任何菜单项。而新版本API有,但它们不显示像配置的那样的图片(如果空间|withText)。有其他人经历过这种情况或想出了任何解决方案吗?

2个回答

25

当使用appcompat库时,我发现了问题所在。你可以像平常一样创建你的菜单。

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

但是,在您的菜单XML文件中,向菜单标记添加xmlns:app属性,如下所示:

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

然后,在每个菜单项中,通常您会指定“showAs”样式(ifRoom、withText等),请在常规语句旁边包含这个替代语句:

app:showAsAction="ifRoom|withText"
android:showAsAction="ifRoom|withText"

这样一来,你的菜单将在当前和旧的API上正确显示。我从这里获取了此信息。


除了 @David Wood 的答案之外,您应该在代码中添加 setHasOptionsMenu(true) 语句,以通知您拥有一个菜单可供使用,而不是默认菜单。 - ajdeguzman

1
如果设备上有物理的“菜单”按钮,它将显示上下文菜单。如果没有,则菜单项将添加到操作栏中。

1
谢谢,但在2.2中没有将任何项添加到ActionBar? - David Wood

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接