11

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?

Andrii Omelchenko
  • 13,183
  • 12
  • 43
  • 79
Flexicoder
  • 8,251
  • 4
  • 42
  • 56

2 Answers2

13

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

Community
  • 1
  • 1
Flexicoder
  • 8,251
  • 4
  • 42
  • 56
  • 4
    Hey @Flexicoder can you try adding the divider and dividerHeight as below: ` ` I could get rid of the vertical scroll bars this way. – pablogeorge May 30 '17 at 07:28
  • 1
    why it is not working for me on Android 6.0. Only thing works for me is setting the textColor and background but divider does not show up... – Vincy Nov 20 '17 at 14:30
  • per our UX I have to use White for background and unfortunately, divider also uses white background. when I change the menu background to any other color I see the divider but not when it is white... So, how do I change the divider color? @android:color/holo_red_dark does not work.... – Vincy Nov 20 '17 at 16:32
  • @Vincy - sounds like you need to ask a new question – Flexicoder Nov 21 '17 at 08:57
  • @pablogeorge's answer solved it for me. Thanks a lot to both! – Jorn Rigter Oct 21 '20 at 10:29
2

this is how I achieved it. colorBankground is to change the color of the line divider.

    <style name="PopupMenu">
    <item name="android:itemBackground">@color/background_medium_gray</item>
    <item name="android:background">@android:color/transparent</item>
    <item name="android:textColor">@android:color/black</item>
    <item name="android:colorBackground">@color/BackgroundGray</item>
    <item name="android:dividerHeight">1dp</item>
</style>

    Context context = new ContextThemeWrapper(getActivity(), R.style.PopupMenu);
    final PopupMenu popupMenu = new PopupMenu(context, view);

    final MenuInflater menuInflater = popupMenu.getMenuInflater();
Vincy
  • 1,078
  • 1
  • 9
  • 16