我在 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's answer above )我在 onCreateOptionsMenu()
中将变量设置为 SearchView
然后在 onQueryTextSubmit()
中当用户提交新搜索时,code> 在 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;
}
关于android - 如何在 Android SearchView 中关闭键盘?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7409288/