2013-04-24 148 views
5

我有一个搜索视图默认设置为默认搜索查询,但我不想虚拟键盘。在下面的代码中,我试图隐藏键盘onCreateOptionsMenu但仍然可以看到键盘。无法隐藏SearchView的虚拟键盘iconfiedby默认(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搜索视图控件。任何暗示虚拟键盘的建议。我做错了什么?

回答

1

在特定活动的清单中添加以下行。

android:windowSoftInputMode="adjustPan|stateHidden" 
+0

为此目的'adjustPan'在这里?仅仅单独使用'stateHidden'是不够的? – Prizoff 2013-04-24 06:40:28

+0

通过使用adjustPan当前的焦点永远不会被键盘遮挡..欲了解更多信息,请点击此处.. http://developer.android.com/guide/topics/manifest/activity-element.html – itsrajesh4uguys 2013-04-24 06:55:53

3

尝试

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

+1。或者,如果不需要手动设置键盘,只需在android清单中放置'android:windowSoftInputMode =“stateAlwaysHidden”'。 – 2016-04-29 14:41:40

4

编辑:我加在上面更好的解决方案,而且还保留了旧的答案作为参考。

@Override 
     public boolean onQueryTextSubmit(String query) { 

        searchView.clearFocus(); 
      return false; 
     } 

Original Answer:我编程使用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 2014-03-06 10:05:41

+1

应接受此答案 – nmxprime 2014-06-20 12:43:26

14

通过Parnit的回答启发,我已经找到了一个更好的方法,这也适用,更美观:

mSearchView.clearFocus(); 
+0

应标记为正确 – Penzzz 2015-06-24 13:20:31

+0

您是否知道如何再次打开键盘? – 2015-11-09 07:34:08

0

在Android清单:

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

简单的解决方案其工作为我的 添加到XML:

android:focusable="false"