cómo cambiar el texto SearchView de Android

91

¿Existe un método setText () para SearchView o algo así? Intento establecer el texto de búsqueda en searchView de esta manera, pero no hay un método para esto.

searchView.setText(searchToken);
Khaled Annajar
fuente

Respuestas:

164

Después de preguntarme e intentar, descubrí que hay un método en la API llamado setQuery () en el que configuras el texto searchView y puedes optar por enviar la búsqueda o no usar el parámetro booleano.

searchView.setQuery(searchToken, false);
Khaled Annajar
fuente
3
Incluso después de establecer el parámetro booleano como falso, sigue realizando consultas de nuevo. Cualquier sugerencia sería útil.
Raj Trivedi
He hecho esto, pero configuré el segundo parámetro para trueque la consulta también se ejecute, pero tenga en cuenta que aunque la consulta se ejecuta bien, el cuadro de texto permanece en blanco, hasta que se le da el enfoque manualmente. ¿Cómo puedo asegurarme de que el valor de ajuste automático también se muestre automáticamente?
nemesisfixx
1
está bien. El segundo argumento es "enviar"
roghayeh hosseini
33

Puede usar setQuery()para cambiar el texto en el cuadro de texto.

Sin embargo, el setQuery()método activa el estado de enfoque de una vista de búsqueda, por lo que se mostrará un teclado en la pantalla después de que se haya invocado este método.

Para solucionar este problema, simplemente llame searchView.clearFocus()al setQuery()método siguiente para desenfocarlo y el teclado no se mostrará en la pantalla.

Ejemplo:

String suggestWord = intent.getDataString();
searchView.setQuery(suggestWord, false);
searchView.clearFocus();
kunemata
fuente
No se muestra desde que se escribe searchView.setIconified (false); espectáculo .
lolo_house
7

Si desea pre-llenar su SearchViewcon algún texto searchView.setQuery(text, false)no funcionaría de la caja. la razón es cuando SearchViewse expande

searchView.onActionViewExpanded()

ser llamado que llama searchView.setText("")y borra cualquier texto que hayamos configurado.

La solución es configurar un oyente Expandir y configurar el texto de prefiltrado una vez que SearchViewse expande

override fun onCreateOptionsMenu(menu: Menu): Boolean {
    menuInflater.inflate(R.menu.main, menu)
    val searchView = menu.findItem(R.id.action_search).actionView as SearchView
    menu.findItem(R.id.action_search).setOnActionExpandListener(object : MenuItem.OnActionExpandListener {
        override fun onMenuItemActionExpand(item: MenuItem?): Boolean {
            // it is important to call this before we set our own query text.
            searchView.onActionViewExpanded()
            searchView.setQuery("Prefil Text", false)
            return true
        }

        override fun onMenuItemActionCollapse(item: MenuItem?) = true
    })
    return true
}
Max
fuente
6

esto es lo que funcionó para mí

    MenuItem sItem = menu.findItem(R.id.search);
    SearchView searchView = (SearchView) sItem.getActionView();

    sItem.expandActionView();
    searchView.setQuery("your text", false);
Wowo Ot
fuente
1
¡Solución sencilla y rápida para salvar vidas!
eren130
0

Si desea que searchView se expanda y se puede reducir a un icono después de que el usuario toque x (cerrar), la forma es:

searchView.isIconified = false // Expand it
searchView.setQuery("your text here", false) // true if you want to submit, otherwise false
searchView.clearFocus() // so the keyboard is not show up.

NOTA: Si lo expande usando:

searchView.onActionViewExpanded()

searchView no se encogerá después de que el usuario toque x (cerrar)

Putra Hardjono
fuente