【发布时间】:2014-08-30 07:46:57
【问题描述】:
我有一个带有 SearchView 和一些纯文本菜单项的标准 Android 操作栏(我没有使用兼容性库)。我想让 SearchView 始终展开,并且溢出菜单中的剩余项目。到目前为止,我的代码在平板电脑和横向模式下的 Nexus 5 上运行良好,但是当手机处于纵向模式时,不会显示溢出菜单。如果我将 collapseActionView 属性添加到 SearchView,溢出菜单会正确显示,但我想保持搜索小部件完全展开。
这是我的选项菜单的 XML:
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:id="@+id/menu_search"
android:icon="@android:drawable/ic_menu_search"
android:title="@string/search"
android:showAsAction="ifRoom"
android:actionViewClass="android.widget.SearchView" />
<item android:id="@+id/action_clear_history"
android:title="@string/action_clear_history"
android:showAsAction="never"/>
<item android:id="@+id/action_feedback"
android:title="@string/action_feedback"
android:showAsAction="never"/>
<item android:id="@+id/action_about"
android:title="@string/action_about"
android:showAsAction="never"/>
</menu>
这是我的onCreateOptionsMenu 代码:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
if (!mNavigationDrawerFragment.isDrawerOpen()) {
getMenuInflater().inflate(R.menu.options_menu, menu);
SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
SearchView searchView = (SearchView) menu.findItem(R.id.menu_search).getActionView();
searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));
searchView.setIconifiedByDefault(false);
restoreActionBar();
return true;
}
return super.onCreateOptionsMenu(menu);
}
这是横向模式的屏幕截图,按预期工作:
这是纵向模式,缺少溢出菜单:
谁能指出我正确的方向?
【问题讨论】:
-
如何使用拆分ActionBar(splitActionBarWhenNarrow)?这应该会让你回到纵向的溢出菜单
-
谢谢。这确实给了我一个溢出菜单,尽管在底部操作栏中。我希望将所有内容都保留在顶部操作栏中,并调整搜索小部件的大小以适应应用程序图标和溢出菜单图标,就像展开图标化搜索小部件一样。但这可能是一个错误的目标。看起来 Google 自己的所有应用程序都将搜索小部件图标化,并且尝试将扩展的搜索小部件与其他图标一起放置可能会导致问题。但我还是很好奇能不能做到!
-
splitActionBarWhenNarrow 是一个特别好的选择,如果您希望一个或多个溢出操作是 showAsActionIfRoom