我在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有关,或者两者兼而有之。有没有人能让它工作,或者知道它为什么不工作?
发布于 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;
}
发布于 2014-07-02 18:38:38
简单,直截了当,干净明了:
@Override
public boolean onQueryTextSubmit(String query) {
// your search methods
searchView.clearFocus();
return true;
}
发布于 2015-03-21 18:24:32
只需在onQueryTextSubmit上返回false,如下所示
@Override
public boolean onQueryTextSubmit(String s) {
return false;
}
https://stackoverflow.com/questions/7409288
复制相似问题