如何在Android SearchView中关闭键盘?

我在ActionBar中有一个searchView。 我想在用户完成输入时关闭键盘。 我在searchView上有以下queryTextListener

final SearchView.OnQueryTextListener queryTextListener = new SearchView.OnQueryTextListener() { 
    @Override 
    public boolean onQueryTextChange(String newText) { 
        // Do something 
        return true; 
    } 

    @Override 
    public boolean onQueryTextSubmit(String query) {

        showProgress();
        // Do stuff, make async call

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

        return true; 
    } 
};

基于类似的问题,下面的代码应该关闭键盘,但在这种情况下它不起作用:

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

我也试过:

InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(searchView.getWindowToken(), 0);

两者都不起作用。 我不确定这是否是Honeycomb特定的问题,或者它是否与ActionBar中的searchView相关,或者两者都有关系。 有没有人得到这个工作,或知道为什么它不工作?


我正在尝试做类似的事情。 我需要从另一个Activity启动SearchActivity ,并在加载时将搜索词显示在打开的搜索字段中。 我尝试了所有的方法之上,但最终(类似于上面Ridcully的回答)我设置一个变量,以SearchViewonCreateOptionsMenu()然后在onQueryTextSubmit()称为clearFocus()SearchView ,当用户提交一个新的搜索:

private SearchView searchView;

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.search_menu, menu);
    searchView = (SearchView) menu.findItem(R.id.menu_search)
            .getActionView(); // set the reference to the searchView
    searchView.setOnQueryTextListener(this); 
    searchMenuItem = (MenuItem) menu.findItem(R.id.menu_search); 
    searchMenuItem.expandActionView(); // expand the search action item automatically
    searchView.setQuery("<put your search term here>", false); // fill in the search term by default
    searchView.clearFocus(); // close the keyboard on load
    return true;
}

@Override
public boolean onQueryTextSubmit(String query) {
    performNewSearch(query);
    searchView.clearFocus();
    return true;
}

简单,直接点和干净:

  @Override
  public boolean onQueryTextSubmit(String query) {
      // your search methods
      searchView.clearFocus();
      return true;
  }

就像下面那样在onQueryTextSubmit上返回false

@Override
public boolean onQueryTextSubmit(String s) {
     return false;
}
链接地址: http://www.djcxy.com/p/2713.html

上一篇: How to dismiss keyboard in Android SearchView?

下一篇: What characters are allowed in an email address?