我正在使用 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标志。
有人有什么想法吗?
答案 0 :(得分:22)
好的,我自己用 EvilDuck 中指向正确的指针来解决这个问题。是的 dymmeh 你是对的,你可以通过编程方式做到这一点!!
我需要使用的是orderInCategory
和menuCategory
的组合。如果您没有指定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)
答案 3 :(得分:0)
一切正确,只需使用onCreateView中的一行代码。
setHasOptionsMenu(true);