Vishal Makasana
Vishal Makasana

Reputation: 960

How I can place overflow menu below toolbar instead of overflow menu to overlaps the app bar

I know that it is per material guideline, but i don't like it and i want it to below toolbar. please provide some info to adjust position of overflow menu.

Upvotes: 7

Views: 10667

Answers (2)

Dan Ponce
Dan Ponce

Reputation: 646

With the above solution I had the problem that the menu item background was transparent and also It was kind of blocking every action on the window until I click the menu item. For the ones having my problem I suggest adding a popup menu to the menu item. For example, I have this item on my menu.xml:

<item
    android:id="@+id/new_work_report"
    android:icon="@drawable/ic_add_white"
    android:title="@string/action_settings"
    app:showAsAction="ifRoom"/>

Then, on my OnOptionsItemsSelected method (after inflating my menu to the activity):

@Override
public boolean onOptionsItemSelected(MenuItem menuItem)
{
    switch (menuItem.getItemId())
    {
        case android.R.id.home:
            finish();
            break;

        case R.id.new_work_report:
            View itemView = FieldSheetActivity.this.findViewById(R.id.new_work_report);
            PopupMenu popMenu = new PopupMenu(MyActivity.this, itemView);
            popMenu.getMenu().add("Do something");

            popMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener()
            {

                @Override
                public boolean onMenuItemClick(MenuItem item)
                {
                    // Your desired action

                    return true;
                }
            });
            popMenu.show();
            break;
    }

    return super.onOptionsItemSelected(menuItem);
}

With this solution, the menu options always are shown below the clicked menu item. In case you have any questions, just ask me!

Upvotes: 0

Girish Kumar
Girish Kumar

Reputation: 366

In your main style use <item name="actionOverflowMenuStyle">@style/OverflowMenu</item>, where

<style name="OverflowMenu" parent="Widget.AppCompat.PopupMenu.Overflow">
  <!-- Required for pre-Lollipop. -->
   <item name="overlapAnchor">false</item>
   <item name="android:dropDownVerticalOffset">-4.0dip</item>
  <!-- Required for Lollipop. -->
   <item name="android:overlapAnchor">false</item>
   <item name="android:dropDownVerticalOffset">4.0dip</item>
</style>

For Lollipop style must be in values-v21.

Upvotes: 35

Related Questions