如何向Android默认上下文操作栏添加更多选项

时间:2014-04-16 16:41:17

标签: android contextual-action-bar

我们知道,默认情况下,在视图上选择一些文本后,android会显示一些默认选项的上下文操作栏(CAB),例如:copy,cut,select all ...

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

我的问题是:是否可以在此默认CAB中添加/删除一些选项?我如何进行上述申请?

谢谢!

1 个答案:

答案 0 :(得分:0)

您必须在每个TextView上使用setCustomSelectionActionModeCallback

你可以有一个布尔值:

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上的Callback,并在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) {

        }
    });