Как добавить дополнительные параметры в контекстную панель действий Android по умолчанию
Как мы знаем, по умолчанию после выбора текста в представлениях Android отображает контекстную панель действий (CAB) с некоторыми параметрами по умолчанию, такими как: копировать, вырезать, выбрать все...
Теперь я хочу иметь приложение (которое имеет только 2 варианта: ON/OFF). Если я его включу, некоторые другие параметры будут добавлены в CAB по умолчанию. Если я отключу его, мои пользовательские параметры будут удалены из CAB Android по умолчанию.
У меня вопрос: можно ли добавить / удалить некоторые параметры в этой CAB по умолчанию? Как я могу подать заявку выше?
Спасибо!
1 ответ
Вам придется использовать setCustomSelectionActionModeCallback
на каждом из ваших TextViews.
Вы можете иметь логическое значение:
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);
}
}
Наконец, вызовите Callback для вашего TextView с помощью метода editContextualActionBar в onCreateActionMode и выполните действие меню в 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) {
}
});