2010-01-29 9 views
6

Ich versuche, eine Copy/Paste-Funktion zu implementieren. Wie kann ich eine Textauswahl von einem EditText erhalten?Android - Get Auswahl von Text aus EditText

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

blabla OnClickListener auf eine Schaltfläche:

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

Dann steckte ich bin. Irgendwelche Ideen?

Antwort

12

Scheint, wie Sie bereits den harten Teil getan habe durch zu finden, was der ausgewählten Bereich ist. Jetzt müssen Sie nur den Teilstring aus dem Volltext ziehen.

Versuchen Sie folgendes:

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

Es ist nur ein grundlegender Java String Betrieb.

+5

Eine kleinen Beschwerde mit Android ist, dass getSelectionStart() und getSelectionEnd() auf die Reihenfolge bezieht, in dem Material ausgewählt wurde, die doesn ‚t unbedingt zu starten führen andy

+0

Jungs, ich bin wie deine Antwort zu tun, aber meine getselectionStart() und getSelectionEnd() -Methode sind mit Problemen. Beide geben den gleichen Wert zurück. – FpontoDesenv

+0

et.getText() gibt eine editierbare zurück. substring() benötigt einen String. Sie müssen ToString() hinzufügen. Das ist - et.getText(). ToString(). Substring (Anfang, Ende) – earlcasper

0

Sie sollten eine spezielle Funktion aus dem Editierbare Objekt verwenden:

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

Dieser Befehl ersetzt den Teil mit (st..en) angegeben mit dem String (CharSequence).

0

Sie brauchen nicht alles zu tun, nur durch langes Drücken Text bearbeiten sie alle relevanten Optionen zeigen wird zum Kopieren/Einfügen/auswählen usw. Wenn Sie den Text mit der Methode von mbaird

gezeigt speichern möchten
0

Zeichenfolge selectedText = et.getText(). ToString(). Substring (startSelection, endSelection);
getText() gibt eine editierbare zurück. Teilzeichenfolge benötigt eine Zeichenfolge. toString() verbindet sie richtig.

0

Sie können es auf diese Weise tun, um den ausgewählten Text aus EditText zu erhalten:

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();