Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Toolbar icons disappearing after expanding the SearchView in Android

here's my problem:

I have that nice toolbar with the icons in landscape mode: enter image description here

after expanding the search view and showing the popup menu the "add" item appears (I thought that it shouldn't):

enter image description here

then returning with the back arrow key, as you see, the add button goes:

enter image description here

and you won't find it in the popup menu anymore: enter image description here

I'm using support:appcompat-v7:25.1.0, and here's my menu code:

    <?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>

I can set the add button showAsAction to "always" but I know that this is discouraged. Does anyone here know why is there this behavior? and how can I prevent that?

Thanks in advance.

like image 783
nabil london Avatar asked Oct 26 '25 05:10

nabil london


1 Answers

You can try to use this:

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;
    }
});

So when SearchView will be collapsed Toolbar will reallocate items and ifRoom items will be visible. I had this bug too and solved it this way.

like image 81
Kovy Avatar answered Oct 27 '25 19:10

Kovy



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!