Search code examples
androidandroid-layoutcustomizationdividerandroid-popupwindow

Styling Android PopupMenu Divider Lines


I'm using a couple of PopupMenus in my app and they all working as expected

Menu image

But I would like to have white lines separating the individual items, but I can't find where I'm meant to be setting this. I was hoping I could get to the underlying ListView but that doesn't seem to be possible. I can't see an style item that relates to the divider line either.

Is this possible, where/how should I be setting this?


Solution

  • I've been able to update the divider colour on a PopupMenu using the following technique (based on clues from this answer https://stackoverflow.com/a/40017199/285190)

    Create a style as follows...

    <style name="popupMenuStyle" >
        <item name="android:textColor">#ffffff</item>
        <item name="android:itemBackground">#000000</item>
        <item name="android:divider">#eaeaea</item>
        <item name="android:dividerHeight">1dp</item>
    </style>
    

    Then when you create the menu create a context wrapper

    Context wrapper = new ContextThemeWrapper(mContext, R.style.popupMenuStyle);
    PopupMenu popup = new PopupMenu(wrapper, sourceView);
    

    This does show a dividing line, BUT the height of the menu doesn't appear to be calculated correctly to include the new divider and a vertical scrollbar is displayed.

    If anyone knows the reason please add a comment