2013-03-08 11 views
6

Mam aktywność, która ma SearchView bezpośrednio nad ListView. Działanie polega na wpisywaniu tekstu przez użytkownika w SearchView, który jest następnie używany do filtrowania zawartości ListView.SearchView i klawiatura

Na telefonie 4 "(Nexus 4), gdy aplikacja jest w orientacji pionowej, a użytkownik zaczyna wpisywać tekst w widoku wyszukiwania, dolna połowa ekranu zajmuje klawiaturę, a tekst jest wprowadzany bezpośrednio Widget SearchView

Jednak, gdy telefon znajduje się w orientacji poziomej, cały ekran jest zajęty przez klawiaturę i "pole tekstowe", a reszta ekranu zostaje utracona Przycisk "Szukaj" i przycisk „szkła magnify” na klawiaturze wydają się mieć żadnych działań.

Zobacz screeny enter image description here

Pytanie

Czy możliwe jest umieszczenie tekstu bezpośrednio w widżecie SearchView w orientacji poziomej?

Jeśli nie, w jaki sposób mogę poprawić działanie przycisków na klawiaturze?

+0

* Czy możliwe jest umieszczenie tekstu bezpośrednio w widżecie SearchView w orientacji poziomej * - Nie sądzę. * jak mogę zrobić przyciski na klawiaturze zrobić coś? * - jakie przyciski? co robić? – Luksprog

+0

"Przycisk" Szukaj "i przycisk" Powiększ szkło "na klawiaturze wydają się nie działać." –

+0

Przepraszam, zupełnie tęskniłem za tym zdaniem. Czy na pewno nie otrzymujesz wywołania 'onQueryTextSubmit' po kliknięciu przycisku wyszukiwania lub przycisku powiększania? – Luksprog

Odpowiedz

12

Musisz ustawić imeOptions dla widgetu SearchView, na przykład w xml SearchableInfo:

android:imeOptions="actionSearch|flagNoExtractUi|flagNoFullscreen" 

Podobnie można osiągnąć poprzez setImeOptions jeśli nie za pomocą XML do konfiguracji widoku wyszukiwania.

0

Można to zrobić z kodu Java jak następujący, w onCreateOptionsMenu (MENU) metoda:

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

Ustawianie imeOptions do android.support.v7.widget.SearchView nie działa: ty” będziesz musiał ustawić to na EditText wewnątrz niego:

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

Czy możesz spojrzeć na to pytanie? Wypróbowałem Twoje rozwiązanie, ale nie zadziałało w moim przypadku. https://stackoverflow.com/questions/46263084/android-search-tool-in-landscape-orientation –