Während die meisten Leute die Frage direkt beantwortet haben, wollte ich mehr auf das Konzept dahinter eingehen. Zuerst wurde ich auf IME aufmerksam gemacht, als ich eine Standard-Anmeldeaktivität erstellte. Es wurde ein Code für mich generiert, der Folgendes enthielt:
<EditText
android:id="@+id/password"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/prompt_password"
android:imeActionId="@+id/login"
android:imeActionLabel="@string/action_sign_in_short"
android:imeOptions="actionUnspecified"
android:inputType="textPassword"
android:maxLines="1"
android:singleLine="true"/>
Sie sollten bereits mit dem inputType-Attribut vertraut sein. Dies informiert Android lediglich über die Art des erwarteten Textes wie E-Mail-Adresse, Passwort oder Telefonnummer. Die vollständige Liste der möglichen Werte finden Sie hier .
Es war jedoch das Attribut, imeOptions="actionUnspecified"dass ich seinen Zweck nicht verstand. Mit Android können Sie mit der Tastatur interagieren, die am unteren Bildschirmrand angezeigt wird, wenn Text mit der Taste ausgewählt wird InputMethodManager. In der unteren Ecke der Tastatur befindet sich eine Schaltfläche mit der Aufschrift "Weiter" oder "Fertig", je nach aktuellem Textfeld. Mit Android können Sie dies mithilfe von anpassen android:imeOptions. Sie können eine Schaltfläche "Senden" oder "Weiter" angeben. Die vollständige Liste finden Sie hier .
Damit können Sie auf Drücken der Aktionstaste warten, indem Sie ein TextView.OnEditorActionListenerfür das EditTextElement definieren. Wie in Ihrem Beispiel:
editText.setOnEditorActionListener(new EditText.OnEditorActionListener() {
@Override
public boolean onEditorAction(EditText v, int actionId, KeyEvent event) {
if (actionId == EditorInfo.IME_ACTION_DONE) {
//do here your stuff f
return true;
}
return false;
}
});
Jetzt in meinem Beispiel hatte ich android:imeOptions="actionUnspecified"Attribut. Dies ist nützlich, wenn Sie versuchen möchten, einen Benutzer anzumelden, wenn dieser die Eingabetaste drückt. In Ihrer Aktivität können Sie dieses Tag erkennen und dann versuchen, sich anzumelden:
mPasswordView = (EditText) findViewById(R.id.password);
mPasswordView.setOnEditorActionListener(new TextView.OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView textView, int id, KeyEvent keyEvent) {
if (id == R.id.login || id == EditorInfo.IME_NULL) {
attemptLogin();
return true;
}
return false;
}
});