2012-01-27 64 views
4

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

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

我想要的就是在使用ICS Holo主题时可以在某处访问该菜单,但仍旧向后兼容旧设备。我该如何解决这个问题?

回答

6

通常只需通过实现onCreateOptionsMenu(Menu menu)并在菜单的XML文件中添加android:showAsAction="ifRoom"以获取所需项目,即可添加这些操作项目。

例如

<?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> 

您是否认为这个事实?

编辑: 这是一个简单implemantation其前一阵子为我工作:

@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); 
    } 
} 
+0

是的,我在所有菜单项上都实现了onCreateOptionsMenu和showAsAction =“isRoom”,但除了应用程序的名称和图标外,操作栏中没有任何内容。 – olane 2012-01-27 15:33:14

+0

@IneffablePigeon:这是一个示例项目:https://github.com/commonsguy/cw-android/tree/master/Menus/ActionBarBC – CommonsWare 2012-01-27 15:34:34

+0

尝试“ifRoom”而不是“isRoom”。 – James 2012-01-27 21:21:25

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。老设备只显示标题栏,当然也在听默认的菜单按钮动作。