2013-03-08 14 views
6

Ich habe eine Aktivität, die eine SearchView direkt über einem ListView hat. Die Aktivität funktioniert, indem der Benutzer Text in die SearchView eingibt, der dann zum Filtern des Inhalts der ListView verwendet wird.SearchView und Tastatur

Auf einem 4 "-Telefon (Nexus 4), wenn die App in Hochformat-Ausrichtung ist und der Benutzer beginnt, Text in der Suchansicht einzugeben, belegt die untere Hälfte des Bildschirms die Tastatur und der Text wird direkt eingegeben das Suche Widget.

jedoch, wenn das Telefon in „Landschaft“ Orientierung ist, der gesamte Bildschirm wird durch die Tastatur und ein „Textfeld“ und der Rest des Bildschirms ist verloren besetzt. die Schaltfläche „suchen“ und die „Magnify Glas“ -Taste auf der Tastatur scheinen keine Wirkung zu haben.

die Screenshots anzeigen enter image description here

Frage

Ist es möglich, den Text im Querformat direkt im SearchView-Widget einzugeben?

Wenn nicht, wie mache ich die Tasten auf der Tastatur etwas tun?

+0

* Ist es möglich, den Text im Querformat direkt im SearchView-Widget einzugeben * - ich glaube nicht. * Wie mache ich die Tasten auf der Tastatur etwas tun? * - Welche Tasten? was ist zu tun? – Luksprog

+0

"Die Schaltfläche" Suchen "und die Schaltfläche" Lupe "auf der Tastatur scheinen keine Aktion zu haben." –

+0

Sorry, ich habe diesen Satz total vermisst. Sind Sie sicher, dass Sie den Aufruf onQueryTextSubmit nicht erhalten, wenn Sie auf die Suche oder die Schaltfläche Vergrößern klicken? – Luksprog

Antwort

12

Sie benötigen imeOptions für das Suche Widget zu setzen, zum Beispiel in der SearchableInfo xml:

android:imeOptions="actionSearch|flagNoExtractUi|flagNoFullscreen" 

Ähnliche über setImeOptions erreicht werden, wenn Ihr nicht xml mit Ihrer Suche zu konfigurieren.

0

Sie tun können es von Java-Code wie folgt, in onCreateOptionsMenu (Menü-Menü) Methode:

searchView.setImeOptions(searchView.getImeOptions() | EditorInfo.IME_ACTION_SEARCH | EditorInfo.IME_FLAG_NO_EXTRACT_UI | EditorInfo.IME_FLAG_NO_FULLSCREEN); 
2

Einstellung der imeOptions zu einem android.support.v7.widget.SearchView nicht funktioniert: Sie‘ ll müssen diese an der EditText Inneren setzen:

Java:

EditText searchInput = searchview.findViewById(android.support.v7.appcompat.R.id.search_src_text) 
searchInput.setImeOptions(EditorInfo.IME_ACTION_SEARCH) 

Kotlin:

val searchInput = searchview.findViewById<EditText>(android.support.v7.appcompat.R.id.search_src_text) 
searchInput.imeOptions = EditorInfo.IME_ACTION_SEARCH 
+0

Können Sie bitte diese Frage betrachten. Ich habe deine Lösung versucht, aber in meinem Fall hat es nicht funktioniert. https://stackoverflow.com/questions/46263084/android-search-tool-in-landscape-orientation –