Есть ли способ разрешить пользователю выбирать / копировать текст в TextView? Мне нужна та же функциональность, что и EditText, где вы можете долго нажимать на элемент управления и получать всплывающие варианты выбора всех / копирования, но мне нужно, чтобы элемент управления выглядел как TextView.
Пробовал несколько вещей, например, заставить EditText использовать параметр editable = "none" или inputType = "none", но они по-прежнему сохраняют рамочный фон EditText, который мне не нужен,
Спасибо
------- Обновить ----------------------
Здесь 99%, все, что я хочу, - это чтобы подсветка выделения была видна (оранжевый материал). В остальном это хорошо, но с этим можно жить:
<EditText
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:editable="false"
style="?android:attr/textViewStyle"
android:textColor="@color/white"
android:textAppearance="@android:style/TextAppearance.Medium"
android:cursorVisible="false"
android:background="@null" />
Я предполагаю, что это происходит из-за cursorVisible = "false", но без этого курсор присутствует даже без выбора.
Ответы:
android: textIsSelectable работает (по крайней мере, в ICS - я еще не проверял в более ранних версиях)
источник
Text View должен быть включен, фокусируемый, longClickable и textIsSelectable
источник
textIsSelectable
не хватает? у меня работает только с этой опциейtextview.setTextIsSelectable(true)
в коде java code.textIsSelectableis
сделай работу за меняtextIsSelectable
работает для одних случаев, но не для других. Иногда один и тот же макет не всегда работает только с textIsSelectable, а с другим текстом. Однако это решение, похоже, не улучшает его работу, поэтому проблема может исходить откуда-то еще.Думаю, у меня есть решение получше. Просто позвони
registerForContextMenu(yourTextView);
и вы
TextView
будете зарегистрированы для получения событий контекстного меню.Затем переопределите
onCreateContextMenu
в своемActivity
Надеюсь, это поможет вам и всем, кто ищет способ скопировать текст из
TextView
источник
ClipboardManager.setText(CharSequence text)
устарела на уровне API 11. ИспользуйтеsetPrimaryClip(ClipData)
вместо этого. Это создает ClippedItem, содержащий данный текст, и устанавливает его в качестве основного клипа. У него нет ярлыка или значка. Хорошее чтение о копипасте: ссылкаЭто позволит пользователю выбирать и копировать текст при долгом нажатии или, как мы обычно делаем
источник
Я пытаюсь реализовать то же самое, и ваш вопрос помог мне правильно настроить макет редактируемого текста. Так что спасибо! :)
Потом я понял, что подсветка будет видна, если наведен курсор. Но мне просто нравится, что вы не хотите видеть курсор перед долгим щелчком по тексту, поэтому я скрываю курсор в файле layout.xml, как и вы, и добавляю прослушиватель событий для длительного щелчка и отображаю курсор только при запуске выделения .
Итак, добавьте слушателя в свою Activity в разделе onCreate:
И вуаля, нет курсора в начале, и если вы долго щелкаете, курсор появляется с границами выделения.
Я надеюсь, что смогу помочь.
Ура, FM
источник
Я тоже пытался сделать что-то подобное, но все же мне нужен был индивидуальный подход с манипуляциями с выделением текста в TextView. Я активировал выделение и копирование по
LongClick
действию.Вот как мне удалось использовать
SpannableString
:и функция копирования:
Надеюсь, это будет полезно для тех, кто ответит на этот вопрос :)
источник
Программное использование Kotlin (ручное копирование)
Или добавьте расширение свойства Kotlin
Тогда позвони
Программное использование Kotlin (автоматическое копирование)
Если вы хотите автоматически копировать, когда пользователь долго нажимает на вас при просмотре, это необходимый базовый код:
Вы можете добавить,
Toast
чтобы подтвердить, что это произошлоИли добавьте функцию расширения Kotlin
Использование Xml (ручное копирование)
Добавьте это в свой
<TextView>
источник
Просто используйте эту простую библиотеку: GitHub: Selectable TextView
источник