SearchWidget in ActionBar anzeigen, wenn der Benutzer die Suchtaste des Geräts drückt

8

Ich habe ein SearchWidget eingerichtet, wie im Android API-Handbuch beschrieben. Es zeigt ein Vergrößerungsglas-Symbol in der Aktionsleiste an und wenn ich darauf klicke, wird das Such-Widget in der Aktionsleiste (ein Eingabefeld mit dunklem Hintergrund) gestartet.

Wenn ich jedoch die Suchtaste des virtuellen Geräts drücke, wird ein anderes Suchfeld gestartet: Es hat einen weißen Hintergrund und ruft nicht die von mir angegebenen Rückrufmethoden auf.

Also habe ich das zu meiner MainActivity-Klasse hinzugefügt:

%Vor%

Die Einrichtung des Such-Widgets ist genau so, wie es in der Dokumentation beschrieben ist:

%Vor%

Meine suchbare.xml:

%Vor%

Und AndroidManifest.xml:

%Vor%

Der Grund, warum ich die setIconfied () -Methode ausprobiert habe, ist, dass im Android API Guide unter "Die Fähigkeit, die Sichtbarkeit des Suchfelds zu wechseln" steht:

  

"Standardmäßig ist das Such-Widget" iconified ", was bedeutet, dass es sich um ein Icon handelt   nur durch ein Suchsymbol (eine Lupe) dargestellt und erweitert auf   Zeige das Suchfeld, wenn der Benutzer es berührt. Wie oben gezeigt, können Sie   zeigen Sie das Suchfeld standardmäßig an, indem Sie aufrufen   setIconifiedByDefault (false). Sie können auch das Such-Widget umschalten   Aussehen durch Aufruf von setIconified (). "

Ich habe auch versucht, startSearch("", false, null, false); aufzurufen, aber das bringt dasselbe Suchfeld mit dem weißen Hintergrund hervor.

Meine Frage ist also: Ist es möglich, das Such-Widget in der Aktionsleiste zu starten, wenn der Benutzer die Such-Taste des Geräts drückt, d. h. genau die gleiche Aktion ausführt, als ob der Such-Menüpunkt angeklickt wäre?

    
Michael Osl 22.12.2012, 12:59
quelle

1 Antwort

10

Beim Schreiben dieser Frage habe ich selbst eine Lösung gefunden. Ich entschied mich immer noch, es zusammen mit der Antwort zu posten, weil es nicht so aussieht, als wäre diese Frage schon einmal auf SO gestellt worden und vielleicht hat jemand das gleiche Problem und / oder findet eine bessere Lösung.

Sie müssen lediglich expandActionView() im Suchmenü aufrufen und alles funktioniert wie erwartet:

%Vor%     
Michael Osl 22.12.2012, 12:59
quelle