在 Android 中展开 SearchView 后工具栏图标消失

nab*_*don 4 android android-toolbar

这是我的问题:

我有一个漂亮的工具栏,其中的图标处于横向模式: 在此输入图像描述

展开搜索视图并显示弹出菜单后,会出现“添加”项(我认为不应该出现):

在此输入图像描述

然后用后退箭头键返回,如您所见,添加按钮如下:

在此输入图像描述

您将不再在弹出菜单中找到它: 在此输入图像描述

我正在使用 support:appcompat-v7:25.1.0,这是我的菜单代码:

    <?xml version="1.0" encoding="utf-8"?>
<menu xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:android="http://schemas.android.com/apk/res/android">

    <item
        android:id="@+id/app_bar_search"
        android:actionViewClass="android.support.v7.widget.SearchView"
        android:icon="@drawable/ic_action_search"
        android:title="Search"
        app:showAsAction="always|collapseActionView"
        android:enabled="true"
        android:visible="true"
        app:actionViewClass="android.support.v7.widget.SearchView"/>
    <item android:title="Add"
        android:enabled="true"
        android:icon="@drawable/ic_action_add"
        android:visible="true"
        app:showAsAction="ifRoom"
        android:id="@+id/add" />
    <item android:title="Settings"
        android:id="@+id/settings"
        app:showAsAction="never"
        android:icon="@drawable/ic_action_settings"
        android:enabled="true"
        android:visible="true" />
    <item android:title="Feedback"
        android:id="@+id/feedbvack"
        app:showAsAction="never"
        android:icon="@drawable/ic_action_feedback"
        android:enabled="true"
        android:visible="true" />

</menu>
Run Code Online (Sandbox Code Playgroud)

我可以将添加按钮 showAsAction 设置为“始终”,但我知道这是不鼓励的。这里有人知道为什么会出现这种行为吗?我怎样才能防止这种情况发生?

提前致谢。

Kov*_*ovy 5

你可以尝试使用这个:

MenuItemCompat.setOnActionExpandListener(searchMenuItem, new MenuItemCompat.OnActionExpandListener() {
    @Override
    public boolean onMenuItemActionExpand(MenuItem item) {
        return true;
    }

    @Override
    public boolean onMenuItemActionCollapse(MenuItem item) {
        supportInvalidateOptionsMenu();
        //or use invalidateOptionsMenu();
        return true;
    }
});
Run Code Online (Sandbox Code Playgroud)

因此,当 SearchView 折叠时,工具栏将重新分配项目,并且 ifRoom 项目将可见。我也遇到这个bug,按照这个方法解决了。