ActionBar片段菜单项。将它们放在前面

时间:2012-04-26 15:00:40

标签: android

我正在使用 onCreateOptionsMenu 成功添加片段菜单项...

@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater)
{
    super.onCreateOptionsMenu(menu, inflater);
    inflater.inflate(R.menu.additional_fragment_menu, menu);
}

上面的这个附加菜单包括1个菜单项。我需要做的是将此菜单项放在所有其他现有项目的前面,以便它首先出现在操作栏上。目前它出现在最后。

(这是 android:showAsAction =“总是”项目我正在添加)

我尝试以编程方式添加它,但MenuItem对象中没有选项允许您指定icon和showAsAction标志。

有人有什么想法吗?

4 个答案:

答案 0 :(得分:22)

好的,我自己用 EvilDuck 中指向正确的指针来解决这个问题。是的 dymmeh 你是对的,你可以通过编程方式做到这一点!!

我需要使用的是orderInCategorymenuCategory的组合。如果您没有指定orderInCategory,Android似乎会忽略menuCategory

  • 我通过将menuCategory属性值设置为"system"来指定应用中每个菜单项的类别。
  • 我的基本菜单项(通过Activity加载的那些)我必须设置高orderInCategory数字,例如10,11,12,13等。
  • 当我膨胀并添加了具有相同类别和orderInCategory值1的附加片段菜单xml时,它显示为第一项。

答案 1 :(得分:4)

尝试在菜单项

上使用“android:orderInCategory”属性

答案 2 :(得分:4)

我不知道你在哪里得到的是你无法以编程方式设置showAsAction选项或图标 例如:

public void onCreateOptionsMenu(Menu menu)
{
    menu.add(Menu.NONE,  /** group ID.. not really needed unless you're working with groups **/
              0,         /** this is the items ID (get this in onOptionsItemSelected to determine what was clicked) **/
              Menu.NONE, /** ORDER.. this is what you want to change **/
              "Cancel") /** title **/
              .setIcon(R.drawable.ic_menu_cancel)
              .setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
}

文档:

menu.add(int groupId, int itemId, int order, CharSequence title)

setShowAsAction(int actionEnum)

setIcon(int resId)

答案 3 :(得分:0)

一切正确,只需使用onCreateView中的一行代码。

setHasOptionsMenu(true);