Android - получить выделение текста из EditText - PullRequest
8 голосов
/ 29 января 2010

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

EditText et=(EditText)findViewById(R.id.title);

Blabla onclicklistener на кнопке:

int startSelection=et.getSelectionStart();
int endSelection=et.getSelectionEnd();

Тогда я застрял. Есть идеи?

Ответы [ 5 ]

14 голосов
/ 29 января 2010

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

Попробуйте это:

String selectedText = et.getText().substring(startSelection, endSelection);

Это просто базовая Java String операция.

0 голосов
/ 08 мая 2015

Вы можете сделать это таким образом, чтобы получить выделенный текст из EditText:

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();
0 голосов
/ 29 января 2015

String selectedText = et.getText (). ToString (). Substring (startSelection, endSelection);
getText () возвращает редактируемый. подстрока нуждается в строке. toString () соединяет их правильно.

0 голосов
/ 12 октября 2012

вам не нужно делать все это, просто долгое нажатие на редактируемый текст покажет вам все соответствующие опции для копирования / вставки / выбора и т. Д. Если вы хотите сохранить текст, используйте метод, показанный mbaird

0 голосов
/ 26 августа 2010

Вы должны использовать специальную функцию из редактируемого объекта:

Editable txt = et.getText();
txt.replace(int st, int en, CharSequence source)

Эта команда заменяет часть, указанную (st..en), на String (CharSequence).

...