Intereting Posts

Как запустить контекстную панель действий для текстового просмотра программно с копиями опций по умолчанию и выбрать все?

Есть ли способ программно запустить контекстную панель действий, связанную с текстовым представлением, нажатием кнопки? Он должен содержать опции по умолчанию для копирования / выбора. В принципе, я хочу показать дескрипторы выделения в своем текстовом представлении, а андроид по умолчанию скопировать / выбрать все в панели действий, щелчком кнопки (вместо длинного щелчка / двойного нажатия).

То, что я пробовал до сих пор: попытался использовать setCustomActionModeCallback () api, но проблема здесь, пользователю нужно долгое нажатие / двойной щелчок по текстовому представлению для CAB. Пробовал использовать startActionMode () api, но не смог найти способ сохранить элементы по умолчанию .. он просто открывает новую пустую CAB .. я знаю, я могу добавить свой собственный экземпляр – выбрать весь код и использовать эту пустую CAB, но Я хочу использовать установленный по умолчанию android, один вместо того, чтобы управлять им самостоятельно.

Редактировать; Я не могу использовать EditText. Представление должно быть только TextView, и длительный щелчок будет отключен. Я делаю все вышеуказанные изменения, устанавливая TextView как выбираемый

Solutions Collecting From Web of "Как запустить контекстную панель действий для текстового просмотра программно с копиями опций по умолчанию и выбрать все?"

Выберите текст вручную, а затем выполните длинный щелчок:

textView.post(new Runnable() { @Override public void run() { Selection.selectAll((Spannable) tv.getText()); tv.performLongClick(); } }); 

Редактировать:

Проблема заключается в том, что встроенный выбор текста CAB является закрытым и использует несколько частных классов. Вам нужно будет скопировать много кода или получить доступ к кучу методов с отражением, чтобы использовать его.

Вы можете создать свое собственное меню CAB, но вам также понадобятся ручки контроллера, в которых снова много кода.

Простым решением было бы жить с тем, что у вас есть, и использовать мой предложенный выше метод. Если вы хотите не называть своего длинного кликера, вы можете удалить его во время вызова кабины:

 Selection.selectAll((Spannable) tv.getText()); tv.setOnLongClickListener(null); tv.performLongClick(); tv.setOnLongClickListener(mLongClickListener); 

Если вы хотите выбрать текст в текстовом представлении, чем есть несколько подходов, за которыми вы можете следовать. Первое, что вы можете сделать, – установить свойства 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]

Спасибо