Es gibt dieses Widget für die ActionBar mit dem Namen 'SearchView'. Wenn es nicht verwendet wird, sieht es folgendermaßen aus:
Und wenn es verwendet wird, sieht es so aus:
Ich möchte (natürlich programmgesteuert) die Suchansicht öffnen ("in Verwendung" machen).
Ich habe verschiedene Funktionen ausprobiert wie:
SearchView searchView = (SearchView) menu.findItem(R.id.menu_search).getActionView();
searchView.setOnQueryTextListener(this);
searchView.performClick();
searchView.requestFocus();
Aber keiner von denen hat funktioniert ...
Die Suchansicht im XML:
<item android:id="@+id/menu_search"
android:title="Search"
android:icon="@drawable/ic_action_search"
android:showAsAction="ifRoom|collapseActionView"
android:actionViewClass="android.widget.SearchView" />
java
android
android-actionbar
Eli Revah
quelle
quelle
showAsAction="always"
Das Suchsymbol bleibt in der Aktionsleiste, wenn es erweitert wird. Dies ähnelt nicht dem Erscheinungsbild, wenn die Suche manuell fokussiert wird.Versuchen
expandActionView()
Sie, MenuItem aufzurufen, nicht onActionViewExpanded () in ActionView.Für mich geht das.
quelle
showAsAction: always
was einige Probleme verursacht.Wenn Sie die Support-Bibliothek nur bei Bedarf verwenden möchten, tun Sie dies
sonst mach das einfach
quelle
Ich weiß, das ist aber spät
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 den Fokus der Suchansicht festzulegen :)
quelle
Die Antwort von Matthias Robberts erweitern:
Ich wollte, dass ein Listenfragment seinen Suchwert beibehält und festlegt, nachdem der Benutzer von einem anderen Fragment zurückgekehrt ist.
und für das Menü, das ich behalte
always|collapseActionView
, bleibt es offen, wenn der Benutzer den Text löscht.quelle
Um eine
searchView
Aufbewahrungclose_button
am Ende zu eröffnen, verwenden Sie diese inonCreate
: -quelle