首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在Android SearchView中关闭键盘?

如何在Android SearchView中关闭键盘?
EN

Stack Overflow用户
提问于 2011-09-14 06:23:46
回答 16查看 51.8K关注 0票数 69

我在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);

两者都不起作用。我不确定这是蜂巢特有的问题,还是与ActionBar中的searchView有关,或者两者兼而有之。有没有人能让它工作,或者知道它为什么不工作?

EN

回答 16

Stack Overflow用户

发布于 2013-02-28 12:02:18

我也在试着做类似的事情。我需要从另一个Activity启动SearchActivity,并在加载时让搜索项出现在打开的搜索字段中。我尝试了上面所有的方法,但最后(类似于Ridcully's answer above),当用户提交新的搜索时,我在onCreateOptionsMenu()中将变量设置为SearchView,然后在onQueryTextSubmit()中将其称为SearchView上的clearFocus()

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;
}
票数 71
EN

Stack Overflow用户

发布于 2014-07-02 18:38:38

简单,直截了当,干净明了:

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

Stack Overflow用户

发布于 2015-03-21 18:24:32

只需在onQueryTextSubmit上返回false,如下所示

@Override
public boolean onQueryTextSubmit(String s) {
     return false;
}
票数 28
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7409288

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档