复位操作栏使用搜索查看后(Reset action bar after using SearchVi

2019-07-29 06:18发布

我使用SearchView小工具,能够在我的应用中进行搜索。 在搜索图标的第一次点击后, SearchView插件扩展到搜索栏和“后退”箭头旁边的应用程序图标显示。 如果我点击应用程序图标的操作栏将恢复到初始状态(没有“返回”箭头)和SearchView恢复到图标。

现在的问题:搜索是执行操作栏不会改变之后,恢复的唯一方法是单击应用程序图标或手机上的“返回”箭头。 也不好,因为我想要的操作栏去到初始状态时,搜索完成。 我试图SearchView.setIconofied(true) ,但有2个问题:

  1. 搜索图标出现在同一地点的编辑字段(最初它是在最右边)。
  2. 操作栏仍显示“返回”箭头。

我想这个问题我从普通导航模式偏离面对的结果。 在我而言一切都相同的活动中发生了(搜索结果显示在承载操作栏相同的活动),因此,例如执行Activity.finish()只是使应用程序退出。

如何引发“退一万步”的动作吧? 或模拟应用程序图标点击?

Answer 1:

这听起来像你已经设置此为一个菜单项可折叠动作视图。 您可以拨打collapseActionView()在该菜单项实例发送回其关闭状态。



Answer 2:

该方法collapseActionView()如果你正在寻找早期版本的Android的支持,那么你应该使用MenuItemCompat库只从API级别14工作。

这里是我的解决方案,以折叠搜索查看和复位操作栏...

private MenuItem searchMenuItem;

@Override
public boolean onCreateOptionsMenu(Menu menu)
{
    getMenuInflater().inflate(R.menu.main_menu, menu);
    SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
    searchMenuItem = menu.findItem(R.id.action_search);
    final SearchView searchView = (SearchView) MenuItemCompat.getActionView(searchMenuItem);
    searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));
    searchView.setIconifiedByDefault(false);

    customizeSearchView(searchView);

    return super.onCreateOptionsMenu(menu);
}




    @Override
protected void onNewIntent(Intent intent)
{
    setIntent(intent);

    if (searchMenuItem != null)
    {
        if (MenuItemCompat.expandActionView(searchMenuItem))
        {
            MenuItemCompat.collapseActionView(searchMenuItem);
        }
        else if (MenuItemCompat.collapseActionView(searchMenuItem))
        {
            MenuItemCompat.expandActionView(searchMenuItem);
        }
    }

    handleIntent(intent);
}


文章来源: Reset action bar after using SearchView