2013-04-24 16 views
5

Ho una vista di ricerca che è impostata come espansa di default con la query di ricerca predefinita ma non voglio la tastiera virtuale. Nel codice sottostante ho provato a nascondere la tastiera in onCreateOptionsMenu ma la tastiera è ancora visibile.Impossibile nascondere la tastiera virtuale di SearchView iconfiedbydefault (false)

imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); 
    MenuItem item = menu.findItem(R.id.menu_search); 
    item.expandActionView(); 
    mSearchView = (SearchView) item.getActionView(); 
    mSearchView.setIconifiedByDefault(false); 
    mSearchView.setQuery(query, true); 
    imm.hideSoftInputFromWindow(mSearchView.getWindowToken(), 0); 

Sto usando il widget vista ricerca sherlock. qualsiasi suggerimento per nascondere la tastiera virtuale. Cosa sto facendo male?

risposta

1

aggiungere la riga sottostante nel manifest per attività particolare.

android:windowSoftInputMode="adjustPan|stateHidden" 
+0

Per quale scopo 'adjustPan' è qui? Non sarebbe sufficiente usare solo 'stateHidden' da solo? – Prizoff

+0

utilizzando adjustPan la messa a fuoco corrente non viene mai oscurata dalla tastiera .. per ulteriori informazioni, fare clic qui http://developer.android.com/guide/topics/manifest/activity-element.html – itsrajesh4uguys

3

provare

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

+1. Oppure metti 'android: windowSoftInputMode = "stateAlwaysHidden" 'su Android manifest se non hai bisogno di impostare la tastiera nascosta manualmente. –

4

Edit: ho aggiunto la soluzione migliore in cima, ma anche mantenuto la vecchia risposta come riferimento.

@Override 
     public boolean onQueryTextSubmit(String query) { 

        searchView.clearFocus(); 
      return false; 
     } 

Risposta originale: Ho programmato utilizzando un setOnQueryTextListener. Quando la vista di ricerca è nascosta, la tastiera scompare e quando è nuovamente visibile, la tastiera non si riavvia.

//set query change listener 
    searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener(){ 
     @Override 
     public boolean onQueryTextChange(String newText) { 
      // TODO Auto-generated method stub 
      return false; 
     } 

     @Override 
     public boolean onQueryTextSubmit(String query) { 
      /** 
      * hides and then unhides search tab to make sure keyboard disappears when query is submitted 
      */ 
        searchView.setVisibility(View.INVISIBLE); 
        searchView.setVisibility(View.VISIBLE); 
      return false; 
     } 

    }); 
+2

Questo funziona per me dopo aver provato decine di metodi! Grazie mille! – Xieyi

+1

Questa risposta deve essere accettata – nmxprime

14

Ispirato dalla risposta di Parnit, ho trovato un metodo migliore, che funziona anche ed è più bella:

mSearchView.clearFocus(); 
+0

Dovrebbe essere contrassegnato come corretto – Penzzz

+0

Sapete come è possibile riaprire la tastiera? –

0

In Android Manifest:

android:windowSoftInputMode="adjustPan|stateHidden" 

in classe libera e chiudi la tastiera:

@Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     // Handle action buttons 
     switch(item.getItemId()) { 
case R.id.search: 
     //TODO Whatever 
      search.clearFocus(); 
     //Open and close the keyboard 
      InputMethodManager imm = (InputMethodManager)MyApplication.getAppContext().getSystemService(
        Context.INPUT_METHOD_SERVICE); 
      imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0); 
      imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0); 
      return true; 
0

soluzione semplice il suo lavoro per la mia aggiungi a XML:

android:focusable="false" 
Problemi correlati