4

由于某些原因,我想完全动态地在 ActionBar 中创建我的操作菜单项。但是当我从代码中添加菜单项时,它们显示为设置菜单项的溢出。

下面是我的代码。任何解决方案?

在此处输入图像描述

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    //getMenuInflater().inflate(R.menu.start, menu);

    MenuItem logoutMI= menu.add(0,1,0,"Logout");
    logoutMI.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
    logoutMI.setShowAsAction(MenuItem.SHOW_AS_ACTION_WITH_TEXT);

    MenuItem configMI= menu.add(0,2,1,"Configuration");
    configMI.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
    configMI.setShowAsAction(MenuItem.SHOW_AS_ACTION_WITH_TEXT);

    return true;
}
4

2 回答 2

5

我认为您需要在setShowAsAction. 从文档中,http://developer.android.com/reference/android/view/MenuItem.html#setShowAsAction(int)

应该使用 SHOW_AS_ACTION_ALWAYS、SHOW_AS_ACTION_IF_ROOM 或 SHOW_AS_ACTION_NEVER 之一,您可以选择将值与 SHOW_AS_ACTION_WITH_TEXT 进行 OR 操作。SHOW_AS_ACTION_WITH_TEXT

前任。

 logoutMI.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS | MenuItem.SHOW_AS_ACTION_WITH_TEXT);

让我知道这是否真的解决了您的问题。

于 2013-06-25T15:37:04.390 回答
1

看看order您的其他菜单项的字段,您正在添加“注销”和“配置”,顺序为 0,但如果所有其他菜单项的顺序为 0,它们将根据它们的时间排序添加到菜单中。

此外,您只需使用 or 运算符调用 setShowAsAction() 一次:

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    //getMenuInflater().inflate(R.menu.start, menu);

    MenuItem logoutMI= menu.add(0,1,0,"Logout");
    logoutMI.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS | MenuItem.SHOW_AS_ACTION_WITH_TEXT);

    MenuItem configMI= menu.add(0,2,0,"Configuration");
    configMI.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS | MenuItem.SHOW_AS_ACTION_WITH_TEXT);

    return true;
}
于 2013-06-25T15:41:55.990 回答