El SearchView de Android se vuelve a enfocar al regresar desde otro fragmento.
Actualmente estoy utilizando la navegación de Jetpack y quiero utilizar una única actividad. Sin embargo, el searchview
sigue recuperando el enfoque cuando regreso desde los detalles de la tarjeta a la búsqueda, a pesar de haber eliminado el enfoque después de hacer clic en buscar. Ver aquí.
Lo que estoy haciendo actualmente para eliminar el enfoque es tener una vista simulada sobre mi barra de herramientas:
<com.google.android.material.appbar.MaterialToolbar
android:id="@+id/database_toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintTop_toTopOf="parent"
style="@style/Widget.MaterialComponents.Toolbar.Primary" />
<!-- Vista simulada para recibir el enfoque después de que SearchView pierda el enfoque -->
<View
android:id="@+id/focus_dummy_view"
android:focusableInTouchMode="true"
android:focusable="true"
android:background="@android:color/transparent"
android:layout_width="match_parent"
android:layout_height="1dp"
app:layout_constraintBottom_toTopOf="@id/database_toolbar" />
Después de realizar una búsqueda, hago lo siguiente:
searchView.clearFocus()
binding.focusDummyView.requestFocus()
Mi solución alternativa actual es alojar los detalles en una actividad, pero preferiría no hacerlo. Creé un nuevo proyecto y aún veo que ocurre este problema.
Algunos detalles adicionales son que esto solo ocurrió después de actualizar a "androidx.fragment:fragment-ktx:1.4.0"
desde 1.2.5
. He informado este problema en el rastreador de errores, pero aún no han respondido. ¿Alguien sabe cómo solucionarlo?
davy.ai
Solución para el problema de recuperación de enfoque en
searchview
en la navegación de Android JetpackSi estás utilizando la navegación de Jetpack y te enfrentas al problema de que
searchview
recupera el enfoque cada vez que regresas de los detalles de la tarjeta a la búsqueda, incluso después de que hayas quitado el enfoque después de hacer clic en buscar, entonces la siguiente solución podría funcionar.Actualmente, es posible que estés utilizando una vista ficticia sobre tu barra de herramientas para recibir el enfoque después de que
SearchView
borre el enfoque. Después de realizar una búsqueda, estás utilizando el siguiente código para quitar el enfoque deSearchView
.Para solucionar este problema, puedes intentar el siguiente truco.
onActionViewCollapsed()
para elSearchView
.true
desde el listeneronQueryTextFocusChange()
.Al hacer esto, el
SearchView
se colapsará al cambiar el enfoque, lo que eliminará el enfoque de él. Esto evitará que recupere el enfoque cuando regreses a la pantalla de búsqueda.Esta solución ha funcionado para algunos usuarios y podría ser un truco temporario hasta que se resuelva el problema de la navegación de Jetpack.