imeOptions "actionNext" a livello di programmazione: come passare al campo successivo?


91

Nel layout XML è possibile specificare android:imeOptions="actionNext"quale Nextpulsante di aggiunta nella tastiera virtuale e facendo clic su di esso - lo stato attivo salta al campo successivo.

Come eseguire questa operazione in modo programmatico, ad esempio in base a un focus di attivazione di eventi per passare al campo successivo?

Risposte:


191

È possibile utilizzare le costanti della classe EditorInfo per le opzioni IME. piace,

editText.setImeOptions(EditorInfo.IME_ACTION_NEXT);

si altrimenti inserisce una nuova riga e salta a quella =)
Ilker Baltaci

2
Come risponde questo alla domanda del PO? Questo non passa automaticamente al campo successivo.
hitmaneidos

27

Cerca il prossimo campo attivabile e poi invoca requestFocus().

TextView nextField = (TextView)currentField.focusSearch(View.FOCUS_RIGHT);
nextField.requestFocus();

2
Questa non è una risposta vera in riferimento al titolo di questa domanda, ma è tecnicamente una risposta valida. La risposta di seguito è più appropriata.
Sean Glover

4
@SeanGlover non dovresti mai usare parole come sotto perché la posizione delle risposte continua a cambiare.
Nike15

19

Solo suggerimento, se stai usando

     EditTextSample.setImeOptions(EditorInfo.IME_ACTION_DONE); 

non funziona, assicurati che il tuo EditText utilizzi una sola riga.

Per esempio:

       editTextSample.setSingleLine();

1
Grazie. Questa dovrebbe essere una risposta accettata. Basta chiamare setSingleLine () PRIMA di setImeOptions.
Herman

8

C'è sempre la necessità di aggiungere tasti extra oltre ai tasti predefiniti disponibili nella QWERTYtastiera virtuale .

Utilizzando XML

<EditText android:text="@+id/EditText01" 
android:id="@+id/EditText01"
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:imeOptions="actionDone"/>

By Programmatic Way

Una EditorInfoè la classe più utile quando devi gestire qualsiasi tipo di input dell'utente nella tua applicazione Android.

IME_ACTION_DONE: Questa azione esegue un'operazione "completata" senza che venga immesso nulla e l'IME verrà chiuso.

 EditTextSample.setImeOptions(EditorInfo.IME_ACTION_DONE);

Per ulteriori informazioni puoi visitare http://developer.android.com/reference/android/view/inputmethod/EditorInfo.html


1

Il ciondolo kotlin

editText.imeOptions = EditorInfo.IME_ACTION_DONE

0
editText.setLines(1);
editText.setSingleLine(true);
editText.setImeOptions(EditorInfo.IME_ACTION_GO);

Risolvo il problema assicurandomi con una sola riga e vado a modificare il testo successivo quando fai clic su Invio


0

Nel mio caso, imposta un imeOptions per risolvere il problema.

edtAnswer.maxLines = 1
edtAnswer.inputType = InputType.TYPE_CLASS_TEXT
edtAnswer.imeOptions = EditorInfo.IME_ACTION_NEXT

0

Puoi farlo da

edittext.imeOptions = EditorInfo.IME_ACTION_DONE //for done button

o

edittext.imeOptions = EditorInfo.IME_ACTION_NEXT //for next button

Ma ... devi capire che se stai usando filtri per edittext allora devi impostare

edittext.setSingleLine()
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.