0

我们知道,默认情况下,在视图上选择一些文本后,android 会显示带有一些默认选项的上下文操作栏 (CAB),例如:复制、剪切、全选...

现在,我想要一个应用程序(只有 2 个选项:ON/OFF),如果我打开它,一些其他选项将添加到默认 CAB。如果我将其关闭,我的自定义选项将从 Android 默认 CAB 中删除。

我的问题是:是否可以在此默认 CAB 中添加/删除某些选项?我怎样才能进行上述应用程序?

谢谢!

4

1 回答 1

0

您必须setCustomSelectionActionModeCallback在每个 TextView 上使用 。

你可以有一个布尔值:

boolean on = true;

然后创建一个实际编辑 CAB 的方法,如下所示:

private void editContextualActionBar(ActionMode actionMode, Menu menu) {
    if (on) {
        // adds a new menu item to the CAB
        // add(int groupId, int itemId, int order, int titleRes)
        menu.add(0, R.id.action_to_be_performed, 1, R.string.action_name);
    } else {
        // removes the new menu item
        menu.removeItem(R.id.action_to_be_performed);
    }
}

最后,使用 onCreateActionMode 中的 editContextualActionBar 方法调用 TextView 上的回调,并在 onActionItemClicked 中执行菜单操作:

textView.setCustomSelectionActionModeCallback(new ActionMode.Callback() {
        @Override
        public boolean onCreateActionMode(ActionMode mode, Menu menu) {
            editContextualActionBar(mode, menu);
            return true;
        }

        @Override
        public boolean onPrepareActionMode(ActionMode mode, Menu menu) {

            return false;
        }

        @Override
        public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
            switch (item.getItemId()) {
                case R.id.action_to_be_performed:
                    // perform action
                    return true;
                default:
                    break;
            }
            return false;
        }

        @Override
        public void onDestroyActionMode(ActionMode mode) {

        }
    });
于 2016-02-04T13:56:18.800 回答