问题描述
每当用户按下键盘上的回车键时,我都希望从SearchView中取消键盘。
country_search.setonQueryTextListener(object : SearchView.OnQueryTextListener {
override fun onQueryTextSubmit(query: String?): Boolean {
country_search.clearFocus()
return true
}
仅当将某些内容放入SearchView并按下键盘的Enter键时,才会调用此代码(onQueryTextSubmit)。如果SearchView为空,则不起作用。
解决方法
添加具有回拨到 onSearch
的监听器country_search.setOnEditorActionListener { view: TextView,i: Int?,keyEvent: KeyEvent? -> onSearch(view,i,keyEvent) }
然后在 onSearch 中根据需要添加以下行
(context.getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager).hideSoftInputFromWindow(text.windowToken,0)
,
以下代码有效:
在我的活动中,我有一个成员变量
private SearchView mSearchView;
在onCreateOptionsMenu()中,我设置了一个变量:
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.library,menu);
mSearchView = (SearchView)menu.findItem(R.id.miSearch).getActionView();
mSearchView.setOnQueryTextListener(this);
return true;
}
最后在QueryTextListener中,我做到了:
mSearchView.setQuery("",false);
mSearchView.setIconified(true);
我不得不查看SearchView的源代码,如果您不将查询文本重置为空字符串,则SearchView会这样做,并且不会删除键盘。