我正在以编程方式构建我的Actionbar
的菜单项,因为bug in Android有两个Fragments
,每个菜单都有自己的菜单。
我正在onCreateActionMode
的{{1}}中构建菜单。如果有超过4个菜单项,则所有项目都被强制进入上下文操作栏的溢出菜单。
这在portait和横向模式中发生,但仅在布局处于非平板电脑视图中时(例如,两个片段均未显示)。我正在使用Android 4.2测试Galaxy Nexus
MultiChoiceModeListener
更新
我已经缩小了这个问题,如果有超过4个菜单项,所有项目都会强制溢出。文本标签的长度无关紧要。我甚至将所有文本设置为空字符串,它们仍然被强制溢出。设置 mListView = getListView();
mListView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE_MODAL);
mListView.setMultiChoiceModeListener(new MultiChoiceModeListener() {
@Override
public boolean onCreateActionMode(android.view.ActionMode mode, android.view.Menu menu) {
// Inflate the menu for the CAB
menu.add(1, 0, 0, "Menu Item 1");
menu.add(1, 1, 1, "Menu Item 2");
menu.add(1, 2, 2, "Menu Item 3");
menu.add(1, 3, 3, "Menu Item 4");
menu.add(1, 4, 4, "Menu Item 5");
return true;
}
}
或IF_ROOM
似乎没有效果。
更新2
我有另一个ALWAYS
正在使用Fragment
,而不是OnItemLongClickListener
,并且我没有遇到同样的问题。我可以输入10个菜单项,它会显示MultiChoiceModeListener
中的第一对,并按预期将其余部分放入溢出状态。
更新3
关于此问题的更多信息,在纵向模式下Nexus 7问题依然存在,但在非平板电脑视图中(两个片段都未显示),在横向模式下Nexus 7,菜单项显示。我唯一能想到的是,当使用Actionbar
时认为在上下文操作栏中没有空间时会有一些间距计算。
答案 0 :(得分:1)
Menu.add()方法都返回MenuItem个。对于添加的每个MenuItem,只需像这样调用MenuItem.setShowAsAction(int):
MenuItem menuItem = menu.add(1, 0, 0, "Menu Item 1");
menuItem.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);