android - 如何以编程方式关闭 SearchView?

标签 android searchview

我目前在我的应用的操作栏中有一个 SearchView。当我单击搜索图标时,SearchView 会展开,键盘会按预期弹出。单击 SearchView 框中的“X”会按预期关闭 SearchView。但是,当 SearchView 被激活并按下“返回”按钮时,我的应用程序将退出。这是正确的行为,但我现在要做的是捕获后退按钮按下并在 SearchView 为时关闭 SearchView (不是我的应用程序)可见的。有没有办法在按下后退按钮时以编程方式调用 SearchView OnCloseListener() ?例如,像这样:

// On a back button press, if we are currently searching,
// close the SearchView. Otherwise, invoke normal back button
// behavior.
public boolean onKeyDown(int keyCode, KeyEvent event) {
   if (keyCode == KeyEvent.KEYCODE_BACK) {
        if (isSearchViewVisible) {
            SearchView searchView = (SearchView) menu.findItem(R.id.searchBox)
               .getActionView();

            // This method does not exist
            searchView.invokeClose();
            return true;
        }
    }
    return super.onKeyDown(keyCode, event);
}

最佳答案

根据@MarcinOrlowski 的回答,您也可以使用:

@Override
public void onBackPressed() {
    if (!searchView.isIconified()) {
        searchView.setIconified(true);
    } else {
        super.onBackPressed();
    }
}

关于android - 如何以编程方式关闭 SearchView?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17506230/

相关文章:

android - 选择项目后如何完全折叠 SearchView?

android - 如何从searchview中获取文本?

android - 如何在 MainActivity 的 ActionBar 中关闭/关闭/折叠 SearchView?

android - 无法隐藏 SearchView 的虚拟键盘 ifiedbydefault(false)

android - 可以使gradle更加透明吗?

javascript - 如何在电话号码输入中插入连字符?

android - Android 上的 Netty - InvalidKeyException

Android 抛出 OutOfMemoryError "Failed to allocate a 164 byte allocation with 44 free bytes and 44B until OOM"(递归情况)

android - 基于 Qt 的 Android 应用程序在一台特定设备上启动时崩溃。 "dlopen failed: libqtforandroid"

java - 在 android 2.3 中使用 SearchView