Mi ci è voluto un po 'per capire questo, ma in realtà è piuttosto semplice.
Inizialmente ho creato una classe personalizzata che estendeva la classe SearchView e utilizzato un override onCreateInputConnection()
, tuttavia non riuscivo a farlo funzionare in questo modo.
Alla fine ho funzionato in un modo molto più semplice, con solo due linee di codice aggiunte.
Hai solo bisogno di chiamare search.getImeOptions()
per ottenere la configurazione corrente, e poi "o" il risultato con EditorInfo.IME_FLAG_NO_EXTRACT_UI
con una chiamata a setImeOptions()
:
search.setImeOptions(options|EditorInfo.IME_FLAG_NO_EXTRACT_UI);
Se non lo fai "o" con le opzioni esistenti , quindi non si ottiene il pulsante di completamento "Cerca" in basso a destra, si ottiene invece un pulsante "Fatto".
Ecco il pieno onCreateOptionsMenu()
di override che ho usato per testare (io ho usato un SearchView nel xml, ma questa soluzione dovrebbe funzionare per voi anche se non stai gonfiare il tuo SearchView da XML):
@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;
}
Ecco l'xml che ho usato per la SearchView in menu_main.xml:
<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"
/>
risultato senza la chiamata a setImeOptions()
:
Risultato con la chiamata a setImeOptions()
:
fonte
2015-07-21 01:49:26
Possibile duplicato di http://stackoverflow.com/questions/4336762/disabling-the-fullscreen-editing-view-for-soft-keyboard-input-in-landscape – yahya
Sto usando una searchview programmaticamente. Non posso invocare onCreateInputConnection e i flag EditorInfo non sono utili – 13KZ