在TextView CustomActionModeCallback上选择溢出菜单项

时间:2014-05-17 13:58:22

标签: android textview android-actionmode overflow-menu

我正在尝试在长按文本视图时显示自定义操作栏。我的菜单有超过5个项目,导致溢出菜单下有一些项目。

当我按下溢出图标时,操作栏被破坏,我无法选择溢出内的任何项目。

    ActionMode.Callback mActionModeCallback = new ActionMode.Callback() {

        public boolean onCreateActionMode(ActionMode mode, Menu menu) {
            MenuInflater inflater = mode.getMenuInflater();
            inflater.inflate(R.menu.add_rule_menu, menu);
            return true;
        }

        public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
            for (int i = 0; i < menu.size(); i++) {
                MenuItem item = menu.getItem(i);
                if (!mOptionsList.contains(item.getItemId()))
                    item.setVisible(false);
            }
            return false;
        }

        // Clicking on overflow button does not trigger this method at all.
        public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
            switch (item.getItemId()) {
             // Rest of the code
            }
        }

        public void onDestroyActionMode(ActionMode mode) {}
    };

    textView.setCustomSelectionActionModeCallback(mActionModeCallback);

1 个答案:

答案 0 :(得分:5)

filed an issue about this years ago,从未解决过。

一个俗气的解决方法是使用嵌套的动作模式。通过这个,我的意思是你有一个动作模式的项目完成当前模式并启动一个新项目,以提供“下钻菜单”效果。我在my recently-resuscitated RichEditText widget中使用它,它提供了一种格式化文本的动作模式。我通过setCustomSelectionActionModeCallback()将“格式”项添加到默认操作模式。点击“格式”打开另一个动作模式,提供粗体和斜体等选项,以及进一步的深入分析,以便像字体更改一样思考。