Sie müssen den Wert von ändern android:showAsAction aus ifRoom|collapseActionView zu always. Das SearchView‘s Attribut android:iconifiedByDefault sollte sein truewas der Standardwert ist, andernfalls kann der Benutzer die nicht reduzieren SearchView nachdem es programmatisch erweitert wurde.
Hallo, eine Tastatur wird angezeigt, aber die Suchansicht wird nicht geöffnet.
– Eli Rewa
9. Januar 2013 um 13:21 Uhr
Hallo, das hat auch nicht funktioniert. Ich habe den Beitrag mit dem XML-Quellcode aktualisiert.
– Eli Rewa
9. Januar 2013 um 13:35 Uhr
Mann, du bist mein verdammter Held
– Eliseo Ocampos
14. Juli 2017 um 16:50 Uhr
showAsAction=”always” zeigt jedoch nach der Drehung eine hässliche Vollbild-Suchleiste an
– Francesco Gabbrelli
25. Februar 2018 um 1:01 Uhr
showAsAction="always" bewirkt, dass das Suchsymbol in der Aktionsleiste bleibt, wenn es erweitert ist, was nicht dem Aussehen ähnelt, wenn die Suche manuell fokussiert wird.
– Benutzer
30. April 2018 um 8:19 Uhr
Versuchen anzurufen expandActionView() auf MenuItem, nicht auf ActionViewExpanded() auf ActionView.
Versuchen Sie, expandActionView() aufzurufen, um es zu öffnen, und collapseActionView(), um es zu schließen. Sie können requestFocus() in der aktuellen Aktionsansicht über getActionView() aufrufen, um der Suchansicht den Fokus zu geben 🙂
Zum androidx.appcompat.widget.SearchView,
searchView.setIconifiedByDefault(true) // didn't work
searchMenuItem.expandActionView() // didn't work
MenuItemCompat.expandActionView(searchMenuItem) // didn't work
searchView.onActionViewExpanded() // didn't work
Solltest du lieber verwenden searchView.setIconified(false) um die Suchansicht zu erweitern
– fm-sys
16. Oktober 2021 um 8:06 Uhr
Gunnar Bernstein
Erweiterung der Antwort von Matthias Robberts:
Ich wollte, dass ein Listenfragment seinen Suchwert beibehält und ihn festlegt, nachdem der Benutzer von einem anderen Fragment zurückkehrt.
if (myViewModel.filterTextSaved.isNotEmpty()) { // Kotlin, storing state in ViewModel
searchItem.expandActionView() // needs to come first, otherwise empty text
theTextArea.setText(courseViewModel.filterTextOnClick)
}
und für das Menü behalte ich always|collapseActionViewandernfalls bleibt es geöffnet, wenn der Benutzer den Text löscht.
Solltest du lieber nutzen searchView.setIconified(false) um die Suchansicht zu erweitern
– fm-sys
16. Oktober 2021 um 8:06 Uhr
Wjatscheslaw Truschin
Ich habe nach einer Lösung gesucht, um SearchView programmgesteuert zu erweitern, da ich den Erweiterungsstatus wiederherstellen muss. Keine Lösung wurde für mich gearbeitet. Außer mit Handler().post(). Ich weiß, dass es keine gute Praxis ist, post() zu verwenden. Aber ich arbeite an einem Legacy-Projekt und diese Problemumgehung ist für mich akzeptabel.
Variablenblock initialisieren
val searchMenuItem = menu.findItem(R.id.menu_search_item)
val searchView = searchMenuItem.actionView as SearchView
Grund, warum post() hilft: Wenn Ihre App nicht gut geschrieben ist, macht sie möglicherweise zu viel Arbeit im UI-Thread. post() stellt sicher, dass Ihr Codeblock ausgeführt wird, wenn der UI-Thread zur Ausführung verfügbar ist. Das heißt, wenn Sie diese Problemumgehung verwenden, können Sie eine kleine Verzögerung zwischen der Erweiterung von SearchView feststellen
13117000cookie-checkWie öffne ich die SearchView programmgesteuert?yes