Search code examples
androidandroid-actionbaroptionmenuoverflow-menu

Customizing Android Overflow menu which pops up when pressing hardware button


I am able to style overflow menu which pops up from action bar but I am not able to style overflow menu which pops up from hardware menu button.

I am interested in styling states of selector for the item in menu.

any ideas are welcome?


Solution

  • For customize the popup menu which is displayed with the hardware menu button, you need to have this item in your app theme:

    <style name="CustomTheme" parent="@style/Theme.AppCompat.Light">
        <item name="android:itemBackground">@drawable/ab_item_selector</item>  
    </style> 
    

    You can change @style/Theme.AppCompat.Light according to your needs (as Holo or something else). Then, the drawable named ab_item_selector might be this:

    <?xml version="1.0" encoding="utf-8"?>
    <selector xmlns:android="http://schemas.android.com/apk/res/android">
        <!-- selected state -->
        <item 
            android:drawable="@drawable/item_selected" 
            android:state_selected="true"></item>
        <!-- pressed state -->
        <item 
            android:drawable="@drawable/item_pressed" 
            android:state_pressed="true"></item>
        <!-- normal state -->
        <item 
            android:drawable="@drawable/item_disabled"></item>
    </selector> 
    

    Hope this helps.


    UPDATE

    For dividers, I'm not sure but it might be:

    <style name="CustomTheme" parent="@style/Theme.AppCompat.Light">
        <item name="android:dropDownListViewStyle">@style/CustomDropDown</item>
        <item name="dropDownListViewStyle">@style/CustomDropDown</item>
    </style>
    
    <style name="CustomDropDown" parent="@style/Widget.AppCompat.Light.ListView.DropDown">
        <item name="android:dividerHeight">1dip</item>
        <item name="android:divider">@drawable/dropdown_divider</item>
    </style>