android - 上下文操作栏强制溢出

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

由于 bug in Android,我正在以编程方式构建我的 Actionbar 的菜单项当有两个 Fragments 每个都有自己的菜单时。

我正在 MultiChoiceModeListeneronCreateActionMode 中构建菜单。如果有超过 4 个菜单项,则所有项目都将强制进入上下文操作栏的溢出菜单。

这发生在纵向和横向模式中,但仅当布局处于非平板电脑 View 时(例如,两个 fragment 均未显示)。我正在使用 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_ROOMALWAYS 似乎没有效果。

更新 2

我有另一个使用 OnItemLongClickListener 而不是 MultiChoiceModeListenerFragment,我没有遇到同样的问题。我可以放入 10 个菜单项,它将在 Actionbar 中显示第一对菜单项,并按预期将其余菜单项放入溢出。

更新 3

关于此问题的更多信息,对于纵向模式下的 Nexus 7,问题仍然存在,但是,在非平板电脑 View 中(两个 fragment 都显示),在横向模式下Nexus 7,菜单项显示。我唯一能想到的是,在使用 MultiChoiceModeListener 时会进行一些间距计算,它认为上下文操作栏中没有空间,而实际上有。

最佳答案

Menu.add()方法都返回 MenuItem秒。对于添加的每个 MenuItem,只需调用 MenuItem.setShowAsAction(int)像这样:

MenuItem menuItem = menu.add(1, 0, 0, "Menu Item 1");
menuItem.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);

关于android - 上下文操作栏强制溢出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13480508/

相关文章:

android - 两种颜色的操作栏背景

android - 使用 dagger2 更改在应用程序类中初始化的改造 baseurl

java - 使用 ViewPageIndicator 的 SherlockFragment 内的 Tabhost

android - 在 init.rc 中测试属性是否未设置

android - 使用 ActionBarsherlock 时更改应用程序标签字体

java - 在我的 Android 应用程序中集成 PagerSlidingTabStrip 时出错

android - ActionBarCompat 支持库 android :selectableItemBackground not working

android - 操作栏样式问题

java - 我正在制作一个双 Webview,它有问题请帮助我

java - 当android中的 ListView 很大时选择列表项时出错?