2013-04-24 7 views
5

Ich habe eine Suchansicht, die standardmäßig mit Standard-Suchabfrage festgelegt ist, aber ich möchte nicht die virtuelle Tastatur.In unteren Code habe ich versucht, Tastatur in verstecken onCreateOptionsMenu aber noch Tastatur ist sichtbar.Kann die virtuelle Tastatur von SearchView nicht ausblenden iconifiedbydefault (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); 

Ich benutze Sherlock Search View Widget. irgendeinen Vorschlag, die virtuelle Tastatur zu verstecken. Was mache ich falsch?

Antwort

1

fügen Sie die folgende Zeile im Manifest für eine bestimmte Aktivität hinzu.

android:windowSoftInputMode="adjustPan|stateHidden" 
+0

Zu welchem ​​Zweck 'adjustPan' hier ist? Wäre es nicht genug, nur "stateHidden" alleine zu benutzen? – Prizoff

+0

mit adjustPan aktuellen Fokus ist nie durch die Tastatur verdeckt .. für weitere Informationen gehen Sie hier .. http://developer.android.com/guide/topics/manifest/activity-element.html – itsrajesh4uguys

3

versuchen

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

+1. Oder setzen Sie einfach 'android: windowSoftInputMode =" stateAlwaysHidden "' auf Android-Manifest, wenn Sie die Tastatur nicht manuell verdecken müssen. –

4

Edit: Ich habe die bessere Lösung auf, behielt aber auch die alte Antwort als Referenz.

@Override 
     public boolean onQueryTextSubmit(String query) { 

        searchView.clearFocus(); 
      return false; 
     } 

Original Antwort: Ich programmierte mit einem SetOnQueryTextListener. Wenn die Suchansicht ausgeblendet wird, verschwindet die Tastatur und wenn sie wieder sichtbar ist, springt die Tastatur nicht wieder hoch.

//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

Das funktioniert für mich, nachdem ich einige Methoden ausprobiert habe! Vielen Dank! – Xieyi

+1

Diese Antwort sollte akzeptiert werden – nmxprime

14

Inspiriert von Parnit Antwort, ich habe eine bessere Methode gefunden, die auch funktioniert und ist schöner:

mSearchView.clearFocus(); 
+0

Sollte als korrekt markiert werden – Penzzz

+0

Wissen Sie, wie es möglich ist, die Tastatur wieder zu öffnen? –

0

In Android Manifest:

android:windowSoftInputMode="adjustPan|stateHidden" 

In der Klasse offen und Schließen Sie die Tastatur:

@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

einfache Lösung, um seine Arbeit für meine zu XML hinzu:

android:focusable="false" 
Verwandte Themen