2010-01-29 7 views
6

Estoy intentando implementar una función de copiar/pegar. ¿Cómo puedo obtener una selección de texto de un EditText?Android: obtenga la selección de texto de EditText

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

blabla OnClickListener en un botón:

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

entonces estoy atascado. ¿Algunas ideas?

Respuesta

12

Parece que ya ha hecho la parte difícil al encontrar cuál es el área seleccionada. Ahora solo necesita sacar esa subcadena del texto completo.

Prueba esto:

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

Es sólo una operación de base Java String.

+5

Una queja menor con el androide es que getSelectionStart() y getSelectionEnd() se refiere al orden en el que se seleccionó cosas, que doesn 't necesariamente conduce a Inicio andy

+0

Chicos, estoy haciendo su respuesta, pero mi método getselectionStart() y getSelectionEnd() están con problemas Ambos están devolviendo el mismo valor. – FpontoDesenv

+0

et.getText() devuelve un editable. substring() nees a String. Necesita agregar toString(). Eso es - et.getText(). ToString(). Subserie (inicio, final) – earlcasper

0

se debe utilizar una función especial del objeto editable:

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

Este comando reemplaza la parte especificada con (st..en) con la cadena (CharSequence).

0

no necesita hacer todo esto, solo mantenga presionada la opción para editar texto, le mostrará todas las opciones relevantes para Copiar/Pegar/Seleccionar, etc. Si desea guardar el texto, utilice el método mostrado por mbaird

0

Cadena selectedText = et.getText(). ToString(). Substring (startSelection, endSelection);
getText() devuelve un archivo editable. substring necesita una cadena. toString() los conecta adecuadamente.

0

Puede hacerlo de esta manera para obtener el texto seleccionado de 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();