我有一个标准的Android操作栏(我没有使用兼容性库)和一个SearchView和少量的纯文本菜单项。我希望SearchView总是展开,溢出菜单中的其余项目。到目前为止,我的代码在平板电脑和我的Nexus 5的横向模式上工作得很好,但是当手机处于纵向模式时,溢出菜单就不会显示了。如果我将collapseActionView属性添加到SearchView中,则会正确显示溢出菜单,但我希望保持搜索小部件完全展开。
下面是菜单:
<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);
}下面是景观模式的屏幕截图,按预期工作:

下面是纵向模式,缺少溢出菜单:

谁能给我指明正确的方向?
发布于 2014-01-01 03:26:06
<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/menu_item_more"
android:icon="@drawable/ic_overflow"
android:showAsAction="always"
android:title="CLICK FOR MORE OPTIONS">
<menu>
<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>
</item>
</menu>我添加了一个item,它包含一个对溢出子菜单的引用,如果需要的话,您可以尝试这样做,或者可以询问对它的怀疑。ic_overflow图标可能是

发布于 2014-08-29 23:46:57
我也有类似的问题,所以我发现了这样的问题:SearchView taking all the space in the new ActionBarCompat,所以解决方案是从代码中手动添加SearchView,而不是从菜单布局中添加。
下面是我在api 19上使用的一些代码,它们都是支持actionbar的片段:
public void initSearchView() {
searchView = new SearchView(getActionBarHelper().getThemedContext());
searchView.setIconifiedByDefault(false);
ActionBar.LayoutParams layoutParams = new ActionBar.LayoutParams(
ActionBar.LayoutParams.MATCH_PARENT,
ActionBar.LayoutParams.WRAP_CONTENT, Gravity.RIGHT
| Gravity.CENTER_VERTICAL);
searchView.setLayoutParams(layoutParams);
getActionBarHelper().setCustomView(searchView);
getActionBarHelper().setDisplayShowCustomEnabled(true);
searchView.setOnQueryTextListener(mOnQueryTextListener);
searchView.clearFocus();
searchView.setImeOptions(EditorInfo.IME_FLAG_NO_EXTRACT_UI);
}
protected ActionBar getActionBarHelper() {
return ((ActivityBase) getActivity()).getSupportActionBar();
}我在initSearchView中调用onCreateView(),
发布于 2013-12-28 21:00:05
试一试
try {
ViewConfiguration config = ViewConfiguration.get(this);
Field menuKeyField = ViewConfiguration.class
.getDeclaredField("sHasPermanentMenuKey");
if (menuKeyField != null) {
menuKeyField.setAccessible(true);
menuKeyField.setBoolean(config, false);
}
} catch (Exception e) {
e.printStackTrace();
}https://stackoverflow.com/questions/20819289
复制相似问题