android - 从上下文操作栏中删除菜单选项

标签 android contextual-action-bar

在 Android TextView 中选择文本时,上下文操作栏会显示复制、剪切、全选、共享等选项。有没有办法在我的应用中删除其中一些选项?

最佳答案

您可以扩充自己的菜单,然后隐藏操作系统插入的所有项目。

首先,跟踪菜单项的所有 ID:

List<Integer> mOptionsList = new ArrayList<Integer>();

/* put these two lines in onCreate() */
mOptionsList.add(R.id.my_option_1);
mOptionsList.add(R.id.my_option_2);

然后,在 onPrepare 中隐藏任何不属于您的 MenuItem:

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

    public boolean onCreateActionMode(ActionMode mode, Menu menu) {
        MenuInflater inflater = mode.getMenuInflater();
        inflater.inflate(R.menu.my_contectual_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;
    }

    public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
        switch (item.getItemId()) {
            case R.id.my_option_1: {
                /* do something for option 1 */
                break;
            }
            case R.id.my_option_2: {
                /* do something for option 2 */
                break;
            }
            default:
                return false;
        }
    }

    public void onDestroyActionMode(ActionMode mode) {}
};

关于android - 从上下文操作栏中删除菜单选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17934081/

相关文章:

android - 移动 Angular 用户界面失败

java - 从 Activity 中的 Fragment 单击返回会显示空 Activity

android - startSupportActionMode() 抛出 NullPointerException

android - 上下文操作栏样式

java - 在 java 中第二次出现逗号后删除字符串

c# - Xamarin.Android 中的 Android 数据绑定(bind)库

android - 在自定义广播接收器中从推送通知打开时 react native 应用程序崩溃

android - ListView CAB勾选项着色

android - 上下文操作栏 : Done button

android - 在文本选择时禁用 android webview 中的上下文操作栏