2009-12-17 2 views
80

Wenn der Benutzer auf EditView klickt, öffnet Android die Tastatur, so dass Benutzer in EditView schreiben können.Wie mache ich einen Android EditView 'Done' Button und verstecke die Tastatur beim Klicken?

Das Problem ist, wenn der Benutzer fertig mit dem Schreiben ist, gibt es keine Möglichkeit, die Tastatur zu verbergen. Der Benutzer muss die Zurück-Taste drücken, um die Tastatur zu verbergen.

Gibt es eine Möglichkeit, eine Done-Taste auf der Tastatur anzuzeigen, die die Tastatur verdeckt?

+0

mögliche Duplikate von [So deaktivieren Sie den "Weiter" -Button auf einer EditText-Softwaretastatur (ersetzen durch "Fertig" -Taste)] (http://stackoverflow.com/questions/2568637/how-to-disable-next- button-on-a-edittext-software-tastatur-replace-with-done) –

Antwort

98

Verwenden Sie TextView.setImeOptions und übergeben Sie actionDone. wie textView.setImeOptions(EditorInfo.IME_ACTION_DONE);

+4

'textView.setImeOptions (EditorInfo.IME_ACTION_DONE);' – sulai

+7

Ich musste 'textView.singleLine (true)' hinzufügen, damit dies programmatisch funktioniert. – Jacksonkr

+0

aber das ist veraltet seit Android 2.3 –

6

Wenn die Eigenschaft kann nicht für das Widget ändern besser sein wie android:imeOptions="actionDone" im Layout xml Datei zu verwenden.

120

Zuerst müssen Sie die android:imeOptions gleich gesetzt Attribut actionDone für Ihr Ziel EditText wie unten zu sehen. Dadurch wird der "RETURN" -Button in der EditText-Tastatur auf einen "DONE" -Button gesetzt.

<EditText 
    android:id="@+id/edittext_done" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:hint="Enter some text" 
    android:imeOptions="actionDone" 
    /> 
+1

Chrome sagt, Ihr Link verweist auf Malware. Pse check this so schnell wie möglich ... – Michael

+0

@Michael hat diesen Link gelöscht. Danke –

+10

Ich musste hinzufügen 'android: singleLine =" true "', um dies über xml – Jacksonkr

13

verwenden:

android:singleLine="true" 
+0

Ja ... Wie wird man sonst unterscheiden, wenn man zur nächsten Zeile wechselt oder die Tastatur schließt? – jstewart379

+0

Das hat für mich funktioniert. Ich entschied mich dafür, auch "actionDone" zu verwenden, nur für den Fall, dass einige Geräte anders reagieren. – Jacksonkr

72

Fügen beideimeOptionsundsingleLine:

<EditText 
    android:id="@+id/edittext_done" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:imeOptions="actionDone" 
    android:singleLine="true" 
    /> 
4

Für den Code:

editText.setImeOptions(EditorInfo.IME_ACTION_DONE); 
1

Eigentlich können Sie benutzerdefinierten Text für diese kleine blaue Schaltfläche festlegen. In der XML-Datei verwenden Sie einfach

auf Ihrem EditText.

Oder in der Java-Datei

etEditText.setImeActionLabel("whatever", EditorInfo.IME_ACTION_DONE); 

verwende ich IME_ACTION_DONE als Beispiel willkürlich wählen, was im zweiten Parameter für diese Funktion gehen. Eine vollständige Liste dieser Aktionen finden Sie unter here.

Es sollte beachtet werden, dass dies nicht dazu führt, dass Text auf allen Tastaturen auf allen Geräten erscheint. Einige Tastaturen unterstützen keinen Text auf dieser Schaltfläche (z. B. "swiftkey"). Und einige Geräte unterstützen es auch nicht. Eine gute Regel ist, wenn Sie Text bereits auf der Schaltfläche sehen, wird dies zu was auch immer Sie möchten ändern.

5

Verwendung:

android:imeActionLabel="Done" 
android:singleLine="true" 
8

Verwenden Sie diese zwei Zeilen zu Ihrer EditText

android:imeActionLabel="Done" 
android:singleLine="true" 

oder Sie können es programmatisch durch diese Leitung erreichen.

editText.setImeOptions(EditorInfo.IME_ACTION_DONE); 
25
android:imeActionLabel="Done" 
android:singleLine="true" 

In der XML-Datei funktioniert gut. Aber das wird auch dazu führen, dass die editText weiterhin in einer einzigen Zeile tippen, die Sie nicht möchten. Wenn Sie also Ihrem Code folgen, stellen Sie sicher, dass Sie nicht alles in einer einzigen Zeile eingeben.

mainText.setHorizontallyScrolling(false); 
mainText.setMaxLines("Maximum integer value that you want to provide"); 
+0

MEGA UPVOTE !!!! –

4

ActionDone ist die Verwendung bei Klick in die nächste Taste in der Tastatur, dass die Zeit Tastatur hide.Use in Text bearbeiten oder AppcompatEdit

XML

1.1 Wenn Sie AppCompatEdittext

<android.support.v7.widget.AppCompatEditText 
    android:id="@+id/edittext" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:imeOptions="actionDone"/> 

1.2 Wenn Sie Edittext

verwenden
<EditText 
    android:id="@+id/edittext" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:imeOptions="actionDone"/> 

JAVA

EditText edittext= (EditText) findViewById(R.id.edittext); 
edittext.setImeOptions(EditorInfo.IME_ACTION_DONE); 
5

Ich habe darauf hinweisen, wie viele Menschen in das, ohne zu wissen, das Problem kämpfen können.

Wenn Sie wollen, dass die kb zu verstecken, wenn Done klicken, und Sie setzen android:imeOptions="actionDone" & android:maxLines="1"ohneinputType Ihre EditText Einstellung wird es NICHT Arbeit als Standard inputType für die EditText ist nicht "text" wie viele Leute denken, .

so, das Setzen von nur inputType wird Ihnen die Ergebnisse, die Sie wünschen was was Sie es einrichten mögen "text", "number", ... etc.

1

Für immer auf die Schaltfläche Fertig

editText.setImeOptions(EditorInfo.IME_ACTION_DONE);

und

android:inputType="text" im xml

Für von der Tastatur angeklickt Handhabung auf fertig

editText.setOnEditorActionListener(new TextView.OnEditorActionListener() { @Override public boolean onEditorAction(TextView v, int actionId, KeyEvent event){ if(actionId == EditorInfo.IME_ACTION_DONE){ // Your action on done return true; } return false; } });

Verwandte Themen