通过代码关闭 Searchview (Android : androidx.appcompat.widget)

Closing Searchview by code (Android : androidx.appcompat.widget)

我的操作栏中有一个 Searchview,我希望它有一个特殊的行为,但我无法实现。 单击搜索时,操作栏中会出现一个编辑字段。 在搜索编辑字段中输入时,将在输入时即时显示结果列表。

到目前为止一切顺利,这是默认行为。

不,我想在从列表中选择任何结果时关闭搜索字段,但目前搜索字段一直显示在操作栏中。

如何通过代码关闭搜索字段? (与单击关闭图标的行为相同)

插图: 默认操作栏:

我点击搜索并开始输入:

我选择第一个搜索结果“乌鲁克之战”:

应用栏仍然显示字段编辑。我必须通过单击关闭按钮来关闭该字段。如何通过代码隐藏字段,使应用栏看起来像默认的第一个屏幕截图?

searchView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                  
                <close field and show search icon again>
                // my tries, which didn't work correctly
                //searchView.clearFocus();
                //searchView.setIconified(true);
                //searchView.setVisibility(View.GONE);
                //searchItem.setVisible(true);

            }
}

如文档所述:https://developer.android.com/reference/android/widget/SearchView#setIconifiedByDefault(boolean)

 searchView.setQuery("", false);

 if (!searchView.isIconifiedByDefault()) {   
     searchView.setIconifiedByDefault(true);
 } 
    

编辑:setIconified(true) 和 isIconfied() 已弃用

也可以尝试在菜单中设置 app:showAsAction="always"