Search code examples
androidandroid-actionbarpopupmenu

Change Background Color Popupmenu on NoActionBar


I still haven't found the correct solution to change the background color for PopupMenu. But in this case i am using AppTheme.NoActionBar for particular reason. Here's my style

<style name="DarkThemeNoAppBar" parent="AppTheme.NoActionBar">
        <item name="backgroundcolor">#3d3b3b</item>
        <item name="cardbackground">#5e5b5b</item>
        <item name="textcolor">#ede7e7</item>
        <item name="textcolordrawer">#faf6f6</item>
        <item name="tintcolor">#d9d4d4</item>
        <item name="buttoncolor">#45b6ac</item>
        <item name="texttitlecolor">#ede7e7</item>
        <item name="backgroundcolorlayout">#181818</item>
        <item name="android:itemBackground">#181818</item>
        <item name="android:textColor">#ede7e7</item>
        <item name="popupMenuStyle">@style/popupMenuDarkStyle</item>
    </style>


    <style name="popupMenuDarkStyle" parent="Widget.AppCompat.PopupMenu">
        <item name="android:popupBackground">#181818</item>
    </style>

If you see popupMenuStyle, this popupMenuDarkStyle does not give any effect in UI. Many literature in google solve this problem but it only for Theme.AppCompat.Light.DarkActionBar but in my case i need to use AppTheme.NoActionBar. Please someone give me some advice.

UPDATE 2 this below is the second attempt

<style name="DarkThemeNoAppBar" parent="AppTheme.NoActionBar">
        <item name="backgroundcolor">#3d3b3b</item>
        <item name="cardbackground">#5e5b5b</item>
        <item name="textcolor">#ede7e7</item>
        <item name="textcolordrawer">#faf6f6</item>
        <item name="tintcolor">#d9d4d4</item>
        <item name="buttoncolor">#45b6ac</item>
        <item name="texttitlecolor">#ede7e7</item>
        <item name="backgroundcolorlayout">#181818</item>
        <item name="android:itemBackground">#181818</item>
        <item name="android:textColor">#ede7e7</item>
        <item name="android:popupMenuStyle">@style/popupMenuDarkStyle</item>
    </style>


    <style name="popupMenuDarkStyle" parent="ThemeOverlay.AppCompat.Light">
        <item name="android:popupBackground">#181818</item>
    </style>

My PopupMenu is attached on optionMenu (on Burger button), here how optionsMenu created in Activity.

 @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Manual add menu
        menu.add(0, 1, 1, DesignUtil.menuIconWithText(getResources()
                .getDrawable(R.drawable.ic_bookmark_black), "Bookmark"));

        menu.add(0, 2, 1, DesignUtil.menuIconWithText(getResources()
                .getDrawable(R.drawable.ic_settings_black_24dp), "Settings"));

        return true;
    }

Yes, popupmenu display correctly but the background color still can not be changed


Solution

  • Try this, it works for me

    step 1.create new style

     <style name="popupMenuStyle" parent="Theme.AppCompat.Light.DarkActionBar">
        <item name="android:textColor">#2FAC7E</item>
        <item name="android:textSize">18sp</item>
        <item name="android:itemBackground">#181818</item>
    </style>
    

    step 2.add this line in your activity where you add PopUpMenu

     Context wrapper = new ContextThemeWrapper(activity, R.style.popupMenuStyle);
     final PopupMenu popup = new PopupMenu(wrapper, view);