Чи існує метод 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()
викликати, який дзвонить searchView.setText("")
і очищає будь-який встановлений нами текст.
Рішення полягає в тому, щоб встановити Expand listener і встановити текст попереднього фільму, коли його 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 (закрити)