Mentre la maggior parte delle persone hanno risposto direttamente alla domanda, ho voluto approfondire di più sul concetto dietro di esso.Innanzitutto, sono stato attirato l'attenzione di IME quando ho creato un'attività di accesso predefinita. Ha generato un codice per me che includeva quanto segue:
<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"/>
Si dovrebbe già avere familiarità con l'attributo inputType. Questo informa semplicemente Android del tipo di testo previsto come indirizzo email, password o numero di telefono. L'elenco completo dei valori possibili può essere trovato here.
Era, tuttavia, l'attributo imeOptions="actionUnspecified"
che non ho capito il suo scopo. Android ti consente di interagire con la tastiera che si apre dalla parte inferiore dello schermo quando il testo viene selezionato utilizzando InputMethodManager
. Nell'angolo in basso della tastiera, c'è un pulsante, in genere dice "Avanti" o "Fatto", a seconda del campo di testo corrente. Android ti consente di personalizzarlo utilizzando android:imeOptions
. È possibile specificare un pulsante "Invia" o "Avanti". L'elenco completo può essere trovato here.
Con questo, è possibile ascoltare le pressioni sul pulsante di azione definendo un TextView.OnEditorActionListener
per l'elemento EditText
. Come nel tuo esempio:
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;
}
});
Ora nel mio esempio ho avuto attributo android:imeOptions="actionUnspecified"
. Ciò è utile quando si desidera provare ad accedere a un utente quando preme il tasto Invio. Nella vostra attività, è possibile rilevare questo tag e quindi tentare il login:
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;
}
});
può essere OnKeyboardActionListener aiutarmi qualsiasi esempio di codice ?? –