我使用SearchView
小工具,能够在我的应用中进行搜索。 在搜索图标的第一次点击后, SearchView
插件扩展到搜索栏和“后退”箭头旁边的应用程序图标显示。 如果我点击应用程序图标的操作栏将恢复到初始状态(没有“返回”箭头)和SearchView
恢复到图标。
现在的问题:搜索是执行操作栏不会改变之后,恢复的唯一方法是单击应用程序图标或手机上的“返回”箭头。 也不好,因为我想要的操作栏去到初始状态时,搜索完成。 我试图SearchView.setIconofied(true)
,但有2个问题:
- 搜索图标出现在同一地点的编辑字段(最初它是在最右边)。
- 操作栏仍显示“返回”箭头。
我想这个问题我从普通导航模式偏离面对的结果。 在我而言一切都相同的活动中发生了(搜索结果显示在承载操作栏相同的活动),因此,例如执行Activity.finish()
只是使应用程序退出。
如何引发“退一万步”的动作吧? 或模拟应用程序图标点击?
这听起来像你已经设置此为一个菜单项可折叠动作视图。 您可以拨打collapseActionView()在该菜单项实例发送回其关闭状态。
该方法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);
}