4

我正在尝试在长按文本视图时呈现自定义操作栏。我的菜单有超过 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);
4

1 回答 1

5

在几年前提出了一个关于这个的问题,但从未得到解决。

一个俗气的解决方法是使用嵌套动作模式。我的意思是,您有一个处于操作模式的项目,该项目完成当前模式并启动一个新模式,以提供“下钻菜单”效果。我在我最近复苏的RichEditText小部件中使用了它,它提供了一种用于格式化文本的操作模式。我通过 .将“格式”项添加到默认操作模式setCustomSelectionActionModeCallback()。点击“格式”会打开另一种操作模式,该模式提供粗体和斜体等选项,以及进一步深入了解字体更改等想法。

于 2014-05-17T14:26:34.757 回答