【问题标题】:How to dismiss keyboard from SearchView (Android) when query is empty?查询为空时如何从 SearchView (Android) 中关闭键盘?
【发布时间】:2020-12-08 22:35:27
【问题描述】:

每当用户按下键盘上的返回键时,我想从 SearchView 中关闭键盘。

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

这个代码 (onQueryTextSubmit) 只有在 SearchView 中放入某些东西并且键盘的输入被按下时才会被调用。如果 SearchView 为空,则它不起作用。

当查询为空且用户按下键盘回车键时,如何关闭键盘?

【问题讨论】:

标签: android keyboard searchview


【解决方案1】:

添加监听器并回调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)

【讨论】:

  • 这不起作用,因为此界面仅适用于 TextViews 而不是 SearchViews
【解决方案2】:

以下代码有效:

在我的活动中,我有一个成员变量

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 只会这样做,并且不会移除键盘。

【讨论】:

    猜你喜欢
    • 2011-11-16
    • 1970-01-01
    • 2014-06-27
    • 2020-06-04
    • 2016-05-19
    • 2023-03-25
    • 1970-01-01
    • 1970-01-01
    • 2016-12-28
    相关资源
    最近更新 更多