Пользовательская панель действий вырезания / копирования для EditText, которая показывает маркеры выделения текста
У меня есть приложение, в котором я хочу иметь возможность отображать TextView (или EditText), который позволяет пользователю выбрать некоторый текст, а затем нажать кнопку, чтобы что-то сделать с этим текстом. Реализация этого на версиях Android до Honeycomb - не проблема, но на Honeycomb и выше, по умолчанию действие длительного нажатия - показать панель действий с параметрами Копировать / Вырезать / Вставить. Я могу перехватить долгое нажатие, чтобы показать свою собственную панель действий, но тогда я не получаю отображаемые ручки выбора текста.
Как только я запустил свой собственный ActionMode, как мне отобразить маркеры выбора текста?
Вот код, который яm, чтобы запустить ActionMode, который работает, за исключением того, что не отображаются дескрипторы выделения текста:
public boolean onLongClick(View v) {
if(actionMode == null)
actionMode = startActionMode(new QuoteCallback());
return true;
}
class QuoteCallback implements ActionMode.Callback {
public boolean onCreateActionMode(ActionMode mode, Menu menu) {
MenuInflater inflater = mode.getMenuInflater();
inflater.inflate(R.menu.quote, menu);
return true;
}
public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
return false;
}
public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
switch(item.getItemId()) {
case R.id.quote:
Log.d(TAG, "Selected menu");
mode.finish();
// here is where I would grab the selected text
return true;
}
return false;
}
public void onDestroyActionMode(ActionMode mode) {
actionMode = null;
}
}