我有一个工作中的SearchView,当用户点击搜索图标时,在我的OptionsMenu中扩展。然而,它只在其他OptionsMenu图标之间可用空间内展开。在宽屏上这没问题,但在狭窄的空间里,只有能显示5-10个字符的搜索框。我希望它可以像Android Contacts应用程序一样覆盖其他图标。目前,我正在使用targetSdkVersion = 17 进行构建。希望我没有漏掉什么简单的问题 :)
(稍后添加说明:到目前为止,我找到的唯一可行的解决方案是隐藏所有菜单图标,当我想要展开搜索图标时。这在概念上很简单。但这很麻烦,因为在恢复隐藏的图标时,必须通过一堆逻辑来确定要恢复哪些图标,或者保留状态变量等。)
这是我的OptionsMenu中项的xml:
<item
android:id="@+id/menu_search_shallow"
android:title="Search Current Folder"
android:icon="@drawable/ic_btn_search"
android:showAsAction="always|collapseActionView"
android:actionViewClass="android.widget.SearchView" />
我在我的主要活动代码中也有:
@Override
public boolean onCreateOptionsMenu (Menu menu)
{
getMenuInflater().inflate(R.menu.nav_menu, menu);
this.optionsMenu = menu;
MenuItem searchItem = menu.findItem (R.id.menu_search_shallow);
searchItem.setOnActionExpandListener (this);
SearchView searchView = (SearchView) searchItem.getActionView();
searchView.setQueryHint (getString (R.string.search_shallow_hint));
searchItem = menu.findItem (R.id.menu_search_deep);
searchItem.setOnActionExpandListener (this);
searchView = (SearchView) searchItem.getActionView();
searchView.setQueryHint (getString (R.string.search_deep_hint));
}
和
@Override
public boolean onMenuItemActionExpand(MenuItem item)
{
SearchView searchView = (SearchView) item.getActionView();
searchView.setOnQueryTextListener (this);
return true;
}
@Override
public boolean onMenuItemActionCollapse(MenuItem item)
{
SearchView searchView = (SearchView) item.getActionView();
searchView.setQuery ("", false);
return true;
}