Есть ли метод setText () для SearchView или что-то в этом роде? Я пытаюсь установить текст для поиска в searchView таким образом, но для этого нет метода.
searchView.setText(searchToken);
Есть ли метод setText () для SearchView или что-то в этом роде? Я пытаюсь установить текст для поиска в searchView таким образом, но для этого нет метода.
searchView.setText(searchToken);
Ответы:
Поразмыслив и попробовав, я обнаружил, что в API есть метод с именем setQuery (), в котором вы устанавливаете текст searchView, и вы можете выбрать, отправлять поиск или не использовать логический параметр.
searchView.setQuery(searchToken, false);
true
таким образом, чтобы запрос также выполнялся, но обратите внимание, что, хотя запрос выполняется хорошо, текстовое поле остается пустым до тех пор, пока не будет установлен фокус вручную. Как обеспечить автоматическое отображение автоматически установленного значения?
Вы можете использовать setQuery()
для изменения текста в текстовом поле.
Однако setQuery()
метод запускает состояние фокуса представления поиска, поэтому клавиатура будет отображаться на экране после вызова этого метода.
Чтобы решить эту проблему, просто вызовите метод searchView.clearFocus()
после, setQuery()
чтобы расфокусировать его, и клавиатура не будет отображаться на экране.
Пример:
String suggestWord = intent.getDataString();
searchView.setQuery(suggestWord, false);
searchView.clearFocus();
Если вы хотите предварительно заполнить SearchView
текст каким-либо текстом searchView.setQuery(text, false)
, из коробки не получится. причина в том, когда SearchView
расширяется
searchView.onActionViewExpanded()
get, который вызывает searchView.setText("")
и очищает любой текст, который мы установили.
Решение состоит в том, чтобы установить прослушиватель Expand и установить предварительно заполненный текст после SearchView
развертывания
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
}
Если вы хотите, чтобы searchView расширился и его можно было сжать до значка после того, как пользователь коснется x (закрыть), способ:
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.
ПРИМЕЧАНИЕ. Если вы расширите его, используя:
searchView.onActionViewExpanded()
searchView не сжимается после нажатия пользователем x (закрыть)