Czy istnieje metoda setText () dla SearchView lub coś podobnego? Próbuję ustawić tekst wyszukiwania w searchView w ten sposób, ale nie ma takiej metody.
searchView.setText(searchToken);
Czy istnieje metoda setText () dla SearchView lub coś podobnego? Próbuję ustawić tekst wyszukiwania w searchView w ten sposób, ale nie ma takiej metody.
searchView.setText(searchToken);
Odpowiedzi:
Po zastanowieniu się i wypróbowaniu dowiedziałem się, że w API jest metoda o nazwie setQuery (), dla której ustawiasz tekst searchView i możesz przesłać wyszukiwanie lub nie używać parametru boolean.
searchView.setQuery(searchToken, false);
true
tak, aby zapytanie również zostało wykonane, ale zauważ, że chociaż zapytanie zostanie wykonane dobrze, pole tekstowe pozostaje puste, aż do ręcznego ustawienia fokusa. Jak upewnić się, że automatycznie ustawiona wartość jest również wyświetlana automatycznie?
Możesz użyć, setQuery()
aby zmienić tekst w polu tekstowym.
Jednak setQuery()
metoda wyzwala stan fokusu widoku wyszukiwania, więc klawiatura zostanie wyświetlona na ekranie po wywołaniu tej metody.
Aby rozwiązać ten problem, po prostu wywołaj metodę searchView.clearFocus()
po setQuery()
, aby ją rozogniskować, a klawiatura nie pojawi się na ekranie.
Przykład:
String suggestWord = intent.getDataString();
searchView.setQuery(suggestWord, false);
searchView.clearFocus();
Jeśli chcesz wstępnie wypełnić SearchView
jakiś tekst searchView.setQuery(text, false)
, nie zadziała po wyjęciu z pudełka. powodem jest SearchView
rozszerzenie
searchView.onActionViewExpanded()
uzyskać połączenie, które wywołuje searchView.setText("")
i czyści każdy ustawiony przez nas tekst.
Rozwiązaniem jest ustawienie detektora Expand i ustawienie tekstu wstępnego po SearchView
rozwinięciu
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
}
Jeśli chcesz, aby searchView rozwijał się i można go zmniejszyć z powrotem do ikony po dotknięciu przez użytkownika x (zamknij), sposób jest następujący:
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.
UWAGA: Jeśli rozszerzysz go za pomocą:
searchView.onActionViewExpanded()
searchView nie zmniejszy się z powrotem po dotknięciu przez użytkownika x (zamknij)