我正在以Actionbar
编程方式构建我的菜单项,这是由于Android 中的一个错误,其中两个Fragments
都有自己的菜单。
我正在构建菜单onCreateActionMode
。MultiChoiceModeListener
如果菜单项超过 4 个,则所有项目都被强制进入上下文操作栏的溢出菜单。
这发生在纵向和横向模式下,但仅当布局在非平板电脑视图中时(例如,两个片段都未显示)。我正在使用 Android 4.2 在 Galaxy Nexus 上进行测试
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;
}
}
更新
我已经将这个问题缩小到如果有超过 4 个菜单项,所有项目都会强制溢出。文本标签的长度无关紧要。我什至将所有文本都设置为空字符串,但它们仍然被迫溢出。设置IF_ROOM
orALWAYS
似乎没有效果。
更新 2
我有另一个Fragment
使用 a OnItemLongClickListener
,而不是 a MultiChoiceModeListener
,并且我没有遇到同样的问题。我可以放入 10 个菜单项,它会Actionbar
按预期显示第一对,并将其余的放入溢出中。
更新 3
关于这个问题的更多信息,对于纵向模式的 Nexus 7,问题仍然存在,但是,在非平板电脑视图中(两个片段均未显示),在 Nexus 7 的横向模式下,菜单项显示。我唯一能想到的是,当使用一个MultiChoiceModeListener
认为上下文操作栏中没有空间的情况下,会进行一些间距计算。