14

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

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

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

(这是我要添加的android:showAsAction="always"项目)

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

有人有想法么?

4

4 回答 4

23

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

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

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

尝试在菜单项上使用“android:orderInCategory”属性

于 2012-04-26T15:05:40.973 回答
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)

于 2012-04-26T15:25:01.387 回答
0

一切都正确,只需在 onCreateView 中使用以下一行代码。

setHasOptionsMenu(true);
于 2014-05-30T06:43:59.770 回答