2010-01-29 11 views
6

Sto tentando di implementare una funzione copia/incolla. Come posso ottenere una selezione di testo da un EditText?Android: consente di selezionare il testo da EditText

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

blabla onclicklistener su un tasto:

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

Poi mi sono bloccato. Qualche idea?

risposta

12

Sembra che tu abbia già fatto la parte difficile individuando l'area selezionata. Ora devi solo estrarre quella sottostringa dal testo completo.

Prova questo:

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

E 'solo un Java String funzionamento di base.

+5

un problemino con Android è che getSelectionStart() e getSelectionEnd() si riferisce all'ordine in cui è stata selezionata roba, che doesn 'necessariamente portare a Start andy

+0

Ragazzi, sto facendo come la tua risposta, ma il mio metodo getselectionStart() e getSelectionEnd() sono con problemi. Entrambi stanno restituendo lo stesso valore. – FpontoDesenv

+0

et.getText() restituisce un modificabile. sottostringa() nees a String. È necessario aggiungere toString(). Cioè - et.getText(). ToString(). Sottostringa (inizio, fine) – earlcasper

0

si dovrebbe utilizzare una funzione speciale dall'oggetto modificabile:

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

Questo comando sostituisce la parte specificata con (st..en) con la stringa (CharSequence).

0

non c'è bisogno di fare tutto questo, basta premere a lungo modificare il testo che vi mostrerà tutte le opzioni rilevanti per copiare/incollare/Selezionare ecc Se si desidera salvare il testo di utilizzare il metodo indicato dalla mbaird

0

String selectedText = et.getText(). ToString(). Sottostringa (startSelection, endSelection);
getText() restituisce un modificabile. la sottostringa ha bisogno di una stringa. toString() li collega correttamente.

0

Si può fare in questo modo per ottenere il testo selezionato da 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(); 
Problemi correlati