上下文操作栏强制溢出

时间:2012-11-20 19:20:20

标签: android android-actionbar actionbarsherlock contextual-action-bar

我正在以编程方式构建我的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时认为在上下文操作栏中没有空间时会有一些间距计算。

1 个答案:

答案 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);