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.OnEditorActionListener
für das EditText
Element 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;
}
});