我们知道,默认情况下,在视图上选择一些文本后,android 会显示带有一些默认选项的上下文操作栏 (CAB),例如:复制、剪切、全选...
现在,我想要一个应用程序(只有 2 个选项:ON/OFF),如果我打开它,一些其他选项将添加到默认 CAB。如果我将其关闭,我的自定义选项将从 Android 默认 CAB 中删除。
我的问题是:是否可以在此默认 CAB 中添加/删除某些选项?我怎样才能进行上述应用程序?
谢谢!
我们知道,默认情况下,在视图上选择一些文本后,android 会显示带有一些默认选项的上下文操作栏 (CAB),例如:复制、剪切、全选...
现在,我想要一个应用程序(只有 2 个选项:ON/OFF),如果我打开它,一些其他选项将添加到默认 CAB。如果我将其关闭,我的自定义选项将从 Android 默认 CAB 中删除。
我的问题是:是否可以在此默认 CAB 中添加/删除某些选项?我怎样才能进行上述应用程序?
谢谢!
您必须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) {
}
});