Как программно запустить контекстную панель действий для просмотра текста с копиями опций по умолчанию и выбрать все?
Есть ли способ программно запустить контекстную панель действий, связанную с представлением текста, одним нажатием кнопки? Он также должен содержать опции по умолчанию для копирования/выбора всех. По сути, я хочу показать маркеры выбора в моем текстовом представлении и вариант копирования/выбора всех по умолчанию для Android на панели действий одним нажатием кнопки (вместо долгого нажатия/двойного нажатия).
То, что я пробовал до сих пор: попытался использовать setCustomActionModeCallback() api, но проблема здесь в том, что пользователю нужно долго нажимать/дважды щелкать текстовое представление для появления CAB. Пробовал использовать startActionMode() api, но не смог найти способ сохранить элементы по умолчанию... он просто открывает новый пустой CAB файл. Я знаю, я могу добавить свой собственный код copy-select all code и использовать этот пустой CAB, но Я хочу использовать Android по умолчанию вместо того, чтобы управлять им самостоятельно.
Редактировать; Я не могу использовать EditText. Представление должно быть только TextView, и длинный щелчок будет отключен. Я делаю все вышеперечисленные изменения, устанавливая TextView как выбираемый
Ответы
Ответ 1
Выберите текст вручную, а затем выполните длинный щелчок:
textView.post(new Runnable() {
@Override
public void run() {
Selection.selectAll((Spannable) tv.getText());
tv.performLongClick();
}
});
Edit:
Проблема заключается в том, что встроенный выбор текста CAB является закрытым и использует несколько частных классов. Вам нужно будет скопировать много кода или получить доступ к кучу методов с отражением, чтобы использовать его.
Вы можете создать свое собственное меню CAB, но вам также понадобятся ручки контроллера, в которых снова много кода.
Простым решением было бы жить с тем, что у вас есть, и использовать мой предложенный выше метод. Если вы хотите избежать вызова своего длинного кликера, вы можете удалить его во время вызова кабины:
Selection.selectAll((Spannable) tv.getText());
tv.setOnLongClickListener(null);
tv.performLongClick();
tv.setOnLongClickListener(mLongClickListener);
Ответ 2
если вы хотите выбрать текст в текстовом представлении, чем есть несколько подходов, за которыми вы можете следовать.
Первое, что вы можете сделать, - установить свойства xml TextView.
android:textIsSelectable = "true"
txtView.setTextIsSelectable(true)
Флаг textIsSelectable позволяет пользователям делать жесты выбора в TextView, который, в свою очередь, запускает встроенные элементы управления копированием и вставкой.
или
android:selectAllOnFocus = true;
setSelectAllOnFocus(boolean)
Если текст можно выбрать, выберите его, когда фокус фокус. и вы можете настроить фокус на щелчке вашей кнопки. используя метод RequestFocus().
для более подробного изучения вы можете ссылаться на эту ссылку. вы найдете всю свою необходимую задачу.
http://developer.android.com/reference/android/widget/TextView.html[http://developer.android.com/reference/android/widget/TextView.html][1]
Благодарю вас