Erweitern Sie und geben Sie SearchView automatisch den Fokus
Lesezeit: 3 Minuten
SweSchnee
Ich entwickle eine Anwendung, bei der der Benutzer auf das Symbol “Suchen” in der ActionBar und ein SearchView wird am oberen Bildschirmrand sichtbar gemacht.
Mein Problem ist, dass die SearchView ist weder im Fokus noch erweitert, sodass der Benutzer die Suchschaltfläche auf drücken muss Searchview um es zu erweitern und die Tastatur herauszubringen.
Wie soll das gelöst werden?
Sie können auch die Methode expandActionView() aufrufen, um sie zu erzwingen:
@Override
public boolean onCreateOptionsMenu( Menu menu )
{
super.onCreateOptionsMenu( menu );
MenuItem searchMenuItem = menu.findItem( R.id.mi_search ); // get my MenuItem with placeholder submenu
searchMenuItem.expandActionView(); // Expand the search menu item in order to show by default the query
return true;
}
Wenn du benutzt AppCompatanstatt anzurufen expandActionView() direkt an der searchMenuItemsollten Sie stattdessen Folgendes verwenden: MenuItemCompat.expandActionView(searchMenuItem).
– Karl Madere
10. April 2014 um 23:57 Uhr
Der @CharlesMadere-Weg ist der einzige, der für mich funktioniert hat, API 23
– Matteo
27. Mai 2016 um 22:10 Uhr
plus 1 für searchMenuItem.expandActionView();
– Vlad
13. November 2017 um 10:10 Uhr
MenuItemCompat.expandActionView(searchMenuItem) ist jetzt veraltet
– Glücksritter
25. April 2018 um 9:39 Uhr
Diese Lösung ist veraltet.
– Begünstige Felix Chinemerem
21. Mai 2020 um 2:43 Uhr
Alex Curran
Rufen Sie auf, um die SearchView standardmäßig erweitert zu machen setIconifiedByDefault(false) darauf, wenn Sie es initialisieren (zB in onCreateOptionsMenu(..) oder onPrepareOptionsMenu(..)). Ich habe festgestellt, dass dies in den meisten Fällen automatisch den Fokus gibt, aber wenn nicht, rufen Sie einfach an requestFocus() auch drauf.
Ich bin mir nicht sicher, um ehrlich zu sein, sorry.
– Alex Curran
29. Juli 2012 um 18:48 Uhr
Hinzufügen eines requestFocus() anrufen onPrepareOptionsMenu(..) hat es mir angetan.
– Der schmutzige Calvinist
18. April 2013 um 18:06 Uhr
requestFocus funktioniert bei mir nicht. Zu “fokussieren” können Sie anrufen setIconified mit false
– Peter Chaula
22. November 2016 um 6:36 Uhr
@SweSnow Sie müssen beide festlegen …searchView.setIconifiedByDefault(false); searchView.requestFocus();
– Pallavbohara
9. November 2017 um 11:16 Uhr
Stellen Sie sicher, dass Sie die Menüeintragseigenschaft festgelegt haben app:showAsAction="always". Als ich den Autofokus entfernte, verschwand das Symbol und das 3-Punkte-Symbol erschien
– Riccardo
22. Mai 2019 um 14:15 Uhr
Pascalius
Wenn du es haben willst iconifiedByDefaultdas hat bei mir funktioniert. setFocusable und setIconified wird gebraucht.
Update: Wenn Sie verwenden android.support.v7.widget.SearchView das Verhalten uns sehr unterschiedlich. clearFocus wird benötigt, wenn Sie nicht möchten, dass die Tastatur ständig angezeigt wird. Aus irgendeinem Grund wird das Menü bei der Verwendung von appcompat ständig neu erstellt.