2014-02-07 10 views
8

Wenn ich von einer anderen Tätigkeit zur Haupttätigkeit zurückkehren, konzentrieren sich die Suche Gewinne und die Tastatur öffnet, ich es geschafft, die Tastatur von Öffnung zu stoppen, indem Sie:Suche Fokus erhält und öffnet Tastatur, wenn sie von einer anderen Aktivität Rückkehr

getWindow().setSoftInputMode(
       WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN); 

aber das ist nicht genug, wenn das Aktionsleisten-Dropdownmenü geöffnet und geschlossen wird, erscheint die Tastatur wieder, weil das searchView immer noch den Fokus hat (denk daran, dass ich nur die Tastatur geschlossen habe). Ich habe versucht, einen Verweis auf die searchView zu bekommen und es Fokus zu verlieren, aber das hat nicht funktioniert.

Also im Grunde will ich nur die searchView nie Fokus oder Aufforderung die Tastatur zu öffnen, es sei denn, der SearchView Textbereich tatsächlich berührt wird.

+0

Siehe diese Lösung: http://stackoverflow.com/a/39635722/2535875 –

Antwort

11

Dies ist aufgrund der SearchView die erste fokussierbare Sicht, wenn die Aktivität wieder in Sicht gebracht wird - das gleiche Problem can be seen for EditTexts.

Die Lösung ist die gleiche - legen Sie eine frühere Ansicht in der Hierarchie fokussierbar. In meinem Fall war dies der Toolbar meine SearchView oben auf war:

<android.support.v7.widget.Toolbar 
    style="@style/ToolbarStyle" 
    android:focusableInTouchMode="true" 
    android:id="@+id/search_activity_toolbar" 
    android:layout_height="?attr/actionBarSize" 
    android:layout_width="match_parent"/> 

<android.support.v7.widget.SearchView 
    android:iconifiedByDefault="false" 
    ... /> 

Jetzt konzentriere ich mich auf meine SearchView gewinnen kann, wenn die Aktivität (clearFocus(); requestFocus(...);) eintritt, dann, wenn Sie die Aktivität über ein Suchergebnis verlassen, dann Wenn Sie die Taste Zurück drücken, befindet sich die Tastatur im selben Zustand wie beim Verlassen.

Beachten Sie, dass einige der anderen Lösungen auf der verknüpften Frage, nämlich setting windowSoftInputMode="stateUnchanged" on the Activity tat nicht für mich arbeiten.

+0

sollte die acc sein Antwort Antwort imho –

+0

... speicherte mir eine Stunde Arbeit. Vielen Dank :) –

+0

Hässlich. Aber es * funktioniert * tatsächlich. Habe meine Stimme bekommen. :-) –

0

beim Initialisieren

mSearchView.setIconifiedByDefault(false); 

Und als zurückkamen, steckte diese in onResume() oder onCreateOptionsMenu (wenn Suche in Menü)

mSearchView.setIconified(false); 

Dann Tastatur wird nicht geöffnet, wenn Sie, bis Sie zurückkommen Klicken Sie auf Text bearbeiten von searchview

Verwandte Themen