我们知道,默认情况下,在视图上选择一些文本后,android会显示一些默认选项的上下文操作栏(CAB),例如:copy,cut,select all ...
现在,我想要一个应用程序(只有2个选项:ON / OFF),如果我打开它,其他一些选项将被添加到默认CAB。如果我将其关闭,我的自定义选项将从Android默认CAB中删除。
我的问题是:是否可以在此默认CAB中添加/删除一些选项?我如何进行上述申请?
谢谢!
答案 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) {
}
});