Android: ¿cómo hacer que el botón Intro del teclado diga "Buscar" y maneje su clic?
No puedo entender esto. Algunas aplicaciones tienen un EditText (cuadro de texto) con la ayuda del cual, cuando lo tocas y aparece el teclado en pantalla, el teclado tiene un botón "Buscar" en lugar de una tecla Intro.
Quiero implementar esto. ¿Cómo puedo implementar ese botón Buscar y detectar la pulsación del botón Buscar?
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 que presiona ese botón Buscar? ¿Tiene algo que ver android:imeActionId
?
En el diseño, configure las opciones del método de entrada para buscar.
<EditText
android:imeOptions="actionSearch"
android:inputType="text" />
En Java, agregue el detector de acciones del editor.
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;
}
});
En kotlin use a continuación:
editText.setOnEditorActionListener { _, actionId, _ ->
if (actionId == EditorInfo.IME_ACTION_SEARCH) {
performSearch()
}
true
}
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(editText.getWindowToken(), 0);
//...perform search
}
En xml
el archivo, 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 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>