在Android ICS操作栏中显示菜单项

时间:2012-01-27 14:59:50

标签: java android android-4.0-ice-cream-sandwich

我有一个我针对Android 2.1编写的应用程序,它使用菜单按钮来显示一些选项。我希望通过ICS中的操作栏溢出按钮提供此菜单,但我无法将其显示出来。

如果我将目标API更改为15,则底部栏中的旧菜单按钮会在ICS中消失,但操作栏右上角的图标不会替换它,因此无法访问菜单。我已经尝试将showAsAction属性添加到菜单项,它什么也没做。我肯定在我的Eclipse构建选项中定位4.0.3。

我想要的只是在使用ICS Holo主题的同时可以访问该菜单,但仍然向后兼容旧设备。我该怎么做?

2 个答案:

答案 0 :(得分:6)

通常只需通过实施onCreateOptionsMenu(Menu menu)并在菜单的XML文件中为所需项添加android:showAsAction="ifRoom"来添加这些操作项。

e.g。

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:id="@+id/menu_save"
          android:icon="@drawable/ic_menu_save"
          android:title="@string/menu_save"
          android:showAsAction="ifRoom|withText" />
</menu>

你有没有考虑过这个事实?

编辑: 这是一个简单的实现,不久之前对我有用:

@Override
public boolean onCreateOptionsMenu(Menu menu){
    super.onCreateOptionsMenu(menu);
    createMenu(menu);
    return true;
}

private void createMenu(Menu menu){
    MenuItem mnu1 = menu.add(0, 0, 0, "Logout");
    {
        mnu1.setAlphabeticShortcut('a');
        mnu1.setIcon(R.drawable.icon);
        mnu1.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
    }
}

答案 1 :(得分:0)

我5分钟前遇到过这个问题。不知道这是否仍然有用,但这就是我解决的方法:

添加super.setBooleanProperty(“showTitle”,true);你的onCreate方法

@Override
public void onCreate(Bundle savedInstanceState) {
super.setBooleanProperty("showTitle", true);
super.onCreate(savedInstanceState);
//more code...

这将强制显示操作栏并更换菜单按钮。 我在eclipse中瞄准android 4。较旧的设备仅将标题显示为标题,当然正在监听默认的菜单按钮操作。