Intereting Posts
Почему maxWidth на кнопке не работает и как его обойти? Воспроизведение звукового файла из Интернета при нажатии кнопки Не удалось разрешить активную зависимость андроида в Gradle, когда Active Android включен в библиотеку Создание пользовательского табулятора, как в браузере Chrome для Android Можно ли издеваться над курсором sqlite3 в Android, если нет db или таблицы? Android, назовите кадры предварительного просмотра камеры Добавить сенсорные события в класс VrPanoramaView для SDK для Google Картона для Android Учебники Android NDK? Разрешение отказа: get / set настройка для пользователя запрашивает запуск как пользователь -2, но вызывает пользователя 0 Чтение текста юникода из активов Android: Как добавить иконки / чертежи в PagerTabStrip из Android Support Lib версии 4? Сбой Android-эмулятора Android при запуске в Android Studio (Linux) Как получить данные из класса курсора Диалог прогресса при запуске новой активности Android: ошибки IO файла

Android: копирование в буфер обмена выбранного текста из TextView

Есть ли возможность скопировать в буфер обмена из компонента интерфейса TextView только выделенный текст?

Я поймал длинное событие пресса, и я скопировал полный текст в буфер обмена, но теперь я хочу указать начало и конец выделения, которое нужно скопировать из TextView.

Спасибо.

Solutions Collecting From Web of "Android: копирование в буфер обмена выбранного текста из TextView"

TextView tv; String stringYouExtracted = tv.getText().toString(); int startIndex = tv.getSelectionStart(); int endIndex = tv.getSelectionEnd(); stringYouExtracted = stringYouExtracted.subString(startIndex, endIndex); ClipboardManager clipboard = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE); clipboard.setText(stringYouExtracted); 

EDIT (предыдущий – это полный ответ, но я наткнулся на свой ответ по ошибке, поэтому хотел бы добавить) :

С помощью новых API измените последние две строки на:

 if(android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.HONEYCOMB) { android.text.ClipboardManager clipboard = (android.text.ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE); clipboard.setText(stringYouExtracted); } else { android.content.ClipboardManager clipboard = (android.content.ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE); android.content.ClipData clip = android.content.ClipData.newPlainText("Copied Text", stringYouExtracted); clipboard.setPrimaryClip(clip); } 

"Copied Text" – это заголовок для вашего объекта COPY в новом APIS

Вы можете сделать это следующим образом:

 ClipboardManager myClipboard = myClipboard = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE); ClipData myClip; EditText editText = (EditText) findViewById(R.id.editText3); int min = 0; int max = editText.getText().length(); if (editText.isFocused()) { final int selStart = editText.getSelectionStart(); final int selEnd = editText.getSelectionEnd(); min = Math.max(0, Math.min(selStart, selEnd)); max = Math.max(0, Math.max(selStart, selEnd)); } // here is your selected text final CharSequence selectedText = editText.getText().subSequence(min, max); String text = selectedText.toString(); // copy to clipboard myClip = ClipData.newPlainText("text", text); myClipboard.setPrimaryClip(myClip); 

Замените EditText на TextView