如何在EditText上调用setCustomSelectionActionModeCallback()后修复上下文菜单栏功能(复制/粘贴等)?

时间:2016-02-11 15:55:18

标签: java android

我正在编写记事本应用程序,其中我有滑块菜单显示一些文本格式面板。当用户尝试选择某些文本时,我切换此面板的视图,因此我将菜单切换代码实现到我的EditText的setCustomSelectionActionModeCallback()中,如下所示:

private void manageContextMenuBar(EditText editText) {

    editText.setCustomSelectionActionModeCallback(new ActionMode.Callback() {

        public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
            return true;
        }
        // There menu is hidden
        public void onDestroyActionMode(ActionMode mode) {
            if (findViewById(R.id.sliderMenu).getVisibility() == View.VISIBLE) {
                findViewById(R.id.sliderMenu).setVisibility(View.GONE);
            }
        }
        // There menu shows up
        public boolean onCreateActionMode(ActionMode mode, Menu menu) {

            if (findViewById(R.id.sliderMenu).getVisibility() == View.GONE) {
                findViewById(R.id.sliderMenu).setVisibility(View.VISIBLE);
            }
            return true;
        }

        public boolean onActionItemClicked(ActionMode mode, MenuItem item) {


            return true;
        }
    });
}

当我长时间点击文本时,我会显示格式菜单,还有软件上下文菜单,上面有粘贴/复制/剪切按钮。

问题是因为我的" Overriding"上下文菜单功能,他们停止工作。我可以点击按钮,但它们无法正常工作。

我希望你能理解我的问题 任何帮助将不胜感激:)

1 个答案:

答案 0 :(得分:1)

您应该return false方法onActionItemClicked。这样,当您单击这些菜单项时,Android会使用默认操作。

@Override
public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
    return false;
}

来自onActionItemClicked方法文档: Returns: true if this callback handled the event, false if the standard MenuItem invocation should continue.