2012-03-24 9 views
6

so versuchte ich android: selectAllOnFocus und natürlich benutze ich android: hinweis. Die App lädt, requestFocus-Trigger und der Volltext ist ausgewählt.Wie wähle ich den gesamten Text aus, wenn ich auf eine EditText-Ansicht klicke?

Das Problem ist, dass wenn ich in den EditText klicke, die Auswahl verloren ist.

ich schon gelesen habe: Select all text inside EditText when it gets focus

+2

Das ist völlig normal. Andernfalls kann der Benutzer die Auswahl nicht löschen. – CommonsWare

+1

Haben Sie selectAllOnFocus über Java-Code in einem onclick-Event versucht? – AJcodez

+1

was erwartest du * sollte * passieren? Durch Ihre Logik wird die Auswahl niemals verschwinden, sobald der Benutzer darauf geklickt hat. ist das wirklich was du willst? –

Antwort

1

Stellen Sie die Auswahl in einem View.OnClickListener etwa so:

editText.setOnClickListener(new View.OnClickListener() { 

    @Override 
    public void onClick(View v) { 
     editText.setSelection(0, editText.getText().length() - 1); 
    } 
} 
+0

Entschuldigung, aber das funktioniert nicht. Der Text wird nicht ausgewählt.Ich sehe aber, was Sie versuchen zu tun, und ich bin überrascht, dass es auch nicht funktioniert. Ich betreibe ICS. –

+1

Ich glaube nicht, dass Sie den '- 1' Teil brauchen. –

7

Aus irgendeinem Grund funktionierte es (auf Jelly Bean) nur dann, wenn ich es mit ein entsandter Handler:

new Handler().post(new Runnable() { 
    @Override 
    public void run() { 
     paidView.selectAll(); 
    } 
}); 
+0

das war die einzige Lösung, die für mich auf Android 4+ arbeitete – user2302510

+0

gleiche für meine Situation: Aufruf von SetText() in einem BroadcastReceiver in einer EditTextPreference – wrapperapps

1

die Auswahl in einem View.OnClickListener Set wie folgt: (mit 0 und Textlänge entgegengesetzt zu dem zuvor approv ed response) - Dadurch wird sichergestellt, dass der Inhalt überschrieben wird, wenn der Benutzer mit der Eingabe beginnt.

editText.setOnClickListener(new View.OnClickListener() { 

    @Override 
    public void onClick(View v) { 
     editText.setSelection(editText.getText().length() - 1, 0); 
    } 
} 
+0

Um den gesamten Text auszuwählen, müssen Sie editText.setSelection schreiben (editText.getText(). Länge(), 0); –

1

Ich weiß, dies ist ein alter Beitrag, aber ich hatte das gleiche Problem. Für mich war die Argumentation, dass ich die Tastatur aus dem Weg räumen möchte (ablehnen), um mich zu orientieren (oder Knöpfe drücken, um Datenreihen hinzuzufügen oder zu entfernen) und wenn ich den EditText, den ich zuvor bearbeitet hatte, wieder anfasste, Es war nervig, wenn die Tastatur wieder aufsprang und der Text wieder aufgehoben wurde, sodass ich entweder den Cursor zum gewünschten Löschort bewegen oder einen anderen EditText berühren und dann das Original wieder anfassen musste, um alles neu auszuwählen . Ich möchte nur die Tastatur Pop-up und den Text ausgewählt haben und bereit zu überschreiben, wenn ich zu diesem EditText gehe.

Es gibt einfache Lösungen dafür:

1) Lange tippen dies bei den meisten Gelegenheiten für Sie tut. Wenn

2) sind Sie bereits setSelectAllOnFocus(true) verwenden, können Sie nur eine einfache clearFocus() und requestFocus() in Ihrem onClick Zuhörer werfen:

etMyEditText.setSelectAllOnFocus(true); 
etMyEditText.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View view) { 
     view.clearFocus(); 
     view.requestFocus(); 
    } 
}); 

Auf diese Weise der EditText alles ausgewählt hat, wenn Sie darauf tippen, unabhängig davon, weicher Tastaturstatus

Weiterer Pluspunkt: hinzufügen android:windowSoftInputMode="adjustPan" in Ihrem <activity .../> Tag in Ihrer AndroidManifest.xml Datei die ausgewählte EditText zu zwingen, in Sicht zu bleiben, wenn die Soft-Tastatur erscheint.

0

versuchen Dieser

editText.setOnClickListener(new View.OnClickListener() { 
@Override 
public void onClick(View v) { 
    editText.selectAll(); 
    //or this.selectAll(); 
} 

den gesamten Text auszuwählen.

Verwandte Themen