Es hat eine Weile gedauert, bis ich das herausgefunden habe, aber es ist eigentlich ganz einfach.
Zunächst erstellte ich eine benutzerdefinierte Klasse, die die SearchView-Klasse erweitert und eine onCreateInputConnection()
überschreiben verwendet, aber ich konnte es nicht so funktionieren.
Ich habe es schließlich auf eine viel einfachere Weise funktioniert, mit nur zwei zusätzlichen Zeilen Code.
Sie müssen nur search.getImeOptions()
rufen Sie die aktuelle Konfiguration zu bekommen, und dann „oder“ das Ergebnis mit EditorInfo.IME_FLAG_NO_EXTRACT_UI
mit einem Aufruf an setImeOptions()
:
search.setImeOptions(options|EditorInfo.IME_FLAG_NO_EXTRACT_UI);
Wenn Sie dies nicht tun „oder“ mit den vorhandenen Optionen , dann wird die Schaltfläche "Suchen" nicht rechts unten angezeigt, sondern nur die Schaltfläche "Fertig". Hier
ist die volle onCreateOptionsMenu()
Überschreibung ich verwendet, um zu testen (ich eine Suche in der XML verwendet, aber diese Lösung sollte für Sie arbeiten, auch wenn Sie nicht Ihre Suche von xml Aufpumpen):
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_main, menu);
SearchManager manager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
SearchView search = (SearchView) menu.findItem(R.id.action_search).getActionView();
SearchableInfo si = manager.getSearchableInfo(getComponentName());
//Here is where the magic happens:
int options = search.getImeOptions();
search.setImeOptions(options|EditorInfo.IME_FLAG_NO_EXTRACT_UI);
//!!!!!!!!!!!
search.setSearchableInfo(si);
search.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String query) {
return false;
}
@Override
public boolean onQueryTextChange(String query) {
return true;
}
});
return true;
}
hier ist die xml ich für die Suche in menu_main.xml verwendet:
<item android:id="@+id/action_search"
android:title="Search"
android:icon="@android:drawable/ic_menu_search"
app:showAsAction="always"
app:actionViewClass="android.support.v7.widget.SearchView"
/>
Ergebnis ohne den Aufruf setImeOptions()
:
Ergebnis mit dem Aufruf von setImeOptions()
:
Mögliches Duplikat von http://stackoverflow.com/questions/4336762/disilbling-the-fullscreen-editing-view-for-soft-keyboard-input-in-landscape – yahya
Ich verwende eine searchview programmgesteuert. Ich kann onCreateInputConnection nicht aufgerufen werden und EditorInfo Flags sind nicht hilfreich – 13KZ