windowsoftinputmode studio android android-softkeyboard

studio - Android: ¿cómo hacer que el botón enter del teclado diga "Buscar" y maneje su clic?



ime android (4)

En Kotlin

evLoginPassword.setOnEditorActionListener { _, actionId, _ -> if (actionId == EditorInfo.IME_ACTION_DONE) { doTheLoginWork() } true }

Código xml parcial

<LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical"> <android.support.design.widget.TextInputLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginBottom="8dp" android:layout_marginTop="8dp" android:paddingLeft="24dp" android:paddingRight="24dp"> <EditText android:id="@+id/evLoginUserEmail" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="@string/email" android:inputType="textEmailAddress" android:textColor="@color/black_54_percent" /> </android.support.design.widget.TextInputLayout> <android.support.design.widget.TextInputLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginBottom="8dp" android:layout_marginTop="8dp" android:paddingLeft="24dp" android:paddingRight="24dp"> <EditText android:id="@+id/evLoginPassword" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="@string/password" android:inputType="textPassword" android:imeOptions="actionDone" android:textColor="@color/black_54_percent" /> </android.support.design.widget.TextInputLayout> </LinearLayout>

No puedo entender esto. Algunas aplicaciones tienen un texto de edición (cuadro de texto) que, cuando lo tocas y aparece el teclado en pantalla, el teclado tiene un botón "Buscar" en lugar de una tecla de entrada.

Quiero implementar esto. ¿Cómo puedo implementar ese botón de búsqueda y detectar la pulsación del botón de búsqueda?

Editar : encontré cómo implementar el botón Buscar; en XML, android:imeOptions="actionSearch" o en Java, EditTextSample.setImeOptions(EditorInfo.IME_ACTION_SEARCH); . Pero, ¿cómo manejo al usuario presionando el botón Buscar? ¿Tiene algo que ver con android:imeActionId ?


En el archivo xml , ponga imeOptions="actionSearch" y inputType="text" , maxLines="1" :

<EditText android:id="@+id/search_box" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="@string/search" android:imeOptions="actionSearch" android:inputType="text" android:maxLines="1" />


En el diseño configure las opciones de su método de entrada para buscar.

<EditText android:imeOptions="actionSearch" android:inputType="text" />

En el java agregar el editor de acciones de escucha.

editText.setOnEditorActionListener(new TextView.OnEditorActionListener() { @Override public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { if (actionId == EditorInfo.IME_ACTION_SEARCH) { performSearch(); return true; } return false; } });


Ocultar el teclado cuando el usuario hace clic en buscar. Además de la respuesta de Robby Pond

private void performSearch() { editText.clearFocus(); InputMethodManager in = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); in.hideSoftInputFromWindow(searchEditText.getWindowToken(), 0); ...perform search }