como alterar o texto do Android SearchView


91

Existe um método setText () para SearchView ou algo parecido? Tento definir o texto de pesquisa no searchView desta forma, mas não há nenhum método para fazer isso.

searchView.setText(searchToken);

Respostas:


164

Depois de pensar e tentar, descobri que existe um método na API chamado setQuery () no qual você define o texto searchView e pode optar por enviar a pesquisa ou não usando o parâmetro booleano.

searchView.setQuery(searchToken, false);

3
Mesmo depois de definir o parâmetro booleano false, ele ainda consulta novamente. Qualquer sugestão ajudaria.
Raj Trivedi

Eu fiz isso, mas definindo o segundo parâmetro para trueque a consulta seja executada também, mas observe que, embora a consulta seja bem executada, a caixa de texto permanece em branco, até quando o foco é dado manualmente. Como posso garantir que o valor definido automaticamente também seja exibido automaticamente?
nemesisfixx

1
está certo. o segundo argumento é "enviar"
roghayeh hosseini

33

Você pode usar setQuery()para alterar o texto na caixa de texto.

No entanto, o setQuery()método aciona o estado de foco de uma visualização de pesquisa, portanto, um teclado será exibido na tela após esse método ter sido invocado.

Para corrigir esse problema, basta ligar searchView.clearFocus()depois setQuery()método para desfocar-lo e o teclado não irá mostrar na tela.

Exemplo:

String suggestWord = intent.getDataString();
searchView.setQuery(suggestWord, false);
searchView.clearFocus();

Não mostrado desde a escrita searchView.setIconified (false); mostrar .
lolo_house

7

Se você quiser pré-preencher SearchViewcom algum texto searchView.setQuery(text, false), não funcionará fora da caixa. a razão é quando SearchViewse expande

searchView.onActionViewExpanded()

é chamado o que chama searchView.setText("")e limpa qualquer texto que definimos.

Solução é definir um ouvinte Expandir e definir o texto pré-fil uma vez que o SearchViewé expandido

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
}

6

Isto é o que funcionou para mim

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

    sItem.expandActionView();
    searchView.setQuery("your text", false);

1
solução simples e rápida para salvar vidas!
eren130

0

Se você quiser que o searchView se expanda e possa ser reduzido a um ícone depois que o usuário tocar em x (fechar), o método é:

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: Se você expandir usando:

searchView.onActionViewExpanded()

searchView não diminuirá depois que o usuário tocar em x (fechar)

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.