2013-04-24 11 views
5

デフォルトの検索クエリではデフォルトで拡張された検索ビューがありますが、仮想キーボードは不要です。 onCreateOptionsMenuまだキーボードが表示されています。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); 

私はsherlock search view widgetを使用しています。仮想キーボードを隠すための提案。私は間違っていますか?

答えて

1

特定のアクティビティのマニフェストに次の行を追加します。

android:windowSoftInputMode="adjustPan|stateHidden" 
+0

adjustPan'がここにある目的のために ':私の XMLに追加するためのシンプルなソリューションの仕事? 'stateHidden'だけでは十分ではないでしょうか? – Prizoff

+0

adjustPan現在のフォーカスを使用してキーボードで隠されることはありません..詳細についてはここに行くhttp://developer.android.com/guide/topics/manifest/activity-element.html – itsrajesh4uguys

3

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

+1。あるいは、手動でキーボードを隠す必要がない場合は、アンドロイド:マニフェストに 'android:windowSoftInputMode =" stateAlwaysHidden "を入れてください。 –

4

編集をしてみてください:私は上に、より良い解決策を追加するだけでなく、リファレンスとして古い答えを保ちました。

@Override 
     public boolean onQueryTextSubmit(String query) { 

        searchView.clearFocus(); 
      return false; 
     } 

オリジナルの回答:setOnQueryTextListenerを使用してプログラミングしました。 searchviewが非表示になると、キーボードは消えてしまい、再び表示されるとキーボードはポップアップしません。

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

これは数十の方法を試した後に私のために働く!どうもありがとう! – Xieyi

+1

この回答を受け入れる必要があります – nmxprime

14

Parnitの答えに触発され、私も動作し、より美しく、より良い方法を、見つけた:

Androidのマニフェストに
mSearchView.clearFocus(); 
+0

正しいとマークする必要があります – Penzzz

+0

キーボードをもう一度開くことができますか? –

0

:クラスのオープンで

android:windowSoftInputMode="adjustPan|stateHidden" 

とキーボードを閉じる:

@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
android:focusable="false" 
関連する問題