1

Android studio 3.2.1

in my app/build.gradle:

android {
    compileSdkVersion 28
    defaultConfig {
        applicationId "com.myproject"
        minSdkVersion 18
        targetSdkVersion 28
        versionCode 1
        versionName "1.1.1"

here my widget:

import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.SearchView;

private MenuItem searchMenuItem;

    searchMenuItem.setOnActionExpandListener(new MenuItem.OnActionExpandListener() {
                @Override
                public boolean onMenuItemActionExpand(MenuItem menuItem) {
                    if (BuildConfig.DEBUG)
                        Log.d(TAG, "onMenuItemActionExpand(), press_magnifying_glass");
                    isSearchWidgetExpanded = true;
                    mToolbar.setBackgroundColor(ContextCompat.getColor(activity, R.color.search_view_background));
                    // Expand (click to magnifying glass) and give focus to
                    // SearchView automatically
                    searchView.setFocusable(true);
                    searchView.setIconified(false);
                    searchView.requestFocusFromTouch();
                    searchView.setIconifiedByDefault(false);

                    menu.setGroupVisible(R.id.main_menu_group, false);
                    return true;
                }

                @Override
                public boolean onMenuItemActionCollapse(MenuItem menuItem) {
                    if (BuildConfig.DEBUG)
                        Log.d(TAG, "onMenuItemActionCollapse(), press_home_searchView");
                    isSearchWidgetExpanded = false;
                    mToolbar.setBackgroundColor(activity.getResources().getColor(R.color.factura_background_color));
                    searchView.setQuery("", false);
                    menu.setGroupVisible(R.id.main_menu_group, true);
                    AndroidUtil.hideKeyboard((Activity) activity);
                    return true;
                }
            });

Here menu xml:

  <menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    tools:context="md.factura.app.cart.CartActivity">

    <group android:id="@+id/main_menu_group">
        <item
            android:id="@+id/action_search"
            android:icon="@drawable/ic_action_search"
            android:title="@string/search"
            app:actionViewClass="android.widget.SearchView"
            app:showAsAction="ifRoom|collapseActionView" />
        <item
            android:id="@+id/changeLanguage"
            android:title="@string/change_language"
            app:showAsAction="never" />
        <item
            android:id="@+id/report_or_review"
            android:title="@string/report_issue"
            app:showAsAction="never" />
        <item
            android:id="@+id/about"
            android:title="@string/about"
            app:showAsAction="never" />
        <item
            android:id="@+id/debug"
            android:title="@string/debug_config"
            android:visible="false"
            app:showAsAction="never" />
    </group>

</menu>

And here result:

  1. Before click on glass icon:

enter image description here

  1. After click on glass icon:

enter image description here

  1. After press back button: enter image description here

As you can see after step#3 the icon glass not show again. Why?

Alexei
  • 14,350
  • 37
  • 121
  • 240

1 Answers1

1

Based on THIS, in your menu item, try replacing:

app:showAsAction="ifRoom|collapseActionView"

with:

app:showAsAction="always|collapseActionView
Ricardo
  • 9,136
  • 3
  • 29
  • 35