查询为空时如何从SearchViewAndroid中关闭键盘?

问题描述

每当用户按下键盘上的回车键时,我都希望从SearchView中取消键盘

   country_search.setonQueryTextListener(object : SearchView.OnQueryTextListener {
        override fun onQueryTextSubmit(query: String?): Boolean {
            country_search.clearFocus()
            return true
        }

仅当将某些内容放入SearchView并按下键盘的Enter键时,才会调用代码(onQueryTextSubmit)。如果SearchView为空,则不起作用。

查询为空并且用户按下键盘的Enter键时,如何关闭键盘

解决方法

添加具有回拨到 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会这样做,并且不会删除键盘。