I\'m trying to create a custom popup menu that I would like to position on the overflow menu button of the actionbar (am using a Toolbar
with setSupportA
I learnt how to get a view from a menuitem here: Android : Get view Reference to a Menu Item
Call View v = findViewById(R.id.overflow)
within your onOptionsItemSelected
method.
Use that view as your anchor in your popupmenu: PopupMenu popupMenu = new PopupMenu(this, v);
I agree with Andrew Orobator in that it is most likely going to need to be "faked" but I would recommend adding an actual view to your Toolbar, instead of trying to deal with Menu items:
<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.Toolbar
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/toolbar"
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:minHeight="?attr/actionBarSize"
android:background="?attr/colorPrimary"
android:elevation="@dimen/elevation_med">
<ImageView
android:id="@+id/overflow"
android:layout_width="2dp"
android:layout_height="2dp"
android:background="@drawable/overflow_icon"
android:layout_gravity="right"/>
</android.support.v7.widget.Toolbar>
In this way, you can directly get the view from the toolbar via toolbar.findViewById(R.id.overflow); or something similar, then set the view as your anchor. It means you would also have to set your own onClick listeners to it as it would no longer get onOptionsMenu() callbacks, but I think this would be the best way to handle your scenario.
Instead of having an actual overflow menu you could "cheat" a little bit. Have an icon in your actionbar that looks like the overflow icon. You should set showAsAction
to always on this MenuItem
. OnClick of the overflow icon, you show a ListPopupWindow that's anchored to the MenuItem
view. If the ListPopupWindow
doesn't show up where you want it to, you can call ListPopupWindow.setHorizontalOffset()
and ListPopupWindow.setVerticalOffset()