如何使用硬件菜单按钮在设备上设置Action Bar Overflow的样式?

Chr*_*ris 5 android android-theme android-optionsmenu android-actionbar android-styles

这就是我在动态栏上设置Action Bar Overflow样式的方式:

<style name="DropDownNav.MyTheme" parent="@android:style/Widget.Holo.Light.Spinner">
    <item name="android:popupBackground">@drawable/menu_dropdown_panel</item>
    <item name="android:dropDownSelector">@drawable/selectable_background</item>
</style>
Run Code Online (Sandbox Code Playgroud)

但是指定的自定义选择器不会应用于具有硬件按钮的Samsung设备上的弹出选项菜单,而是默认为蓝色.

我已经看到了这个答案,并尝试申请

<style name="ListPopupWindow.IvuTheme" parent="android:Widget.ListPopupWindow">
    <item name="android:dropDownSelector">@drawable/list_selector_holo_light</item>
    <item name="android:listSelector">@drawable/list_selector_holo_light</item>
</style>
Run Code Online (Sandbox Code Playgroud)

但没有效果.

我需要继承哪种样式(以及我的主题中的相应属性)才能更改后一个硬件按钮选项菜单中的选择器?

谢谢你的建议

And*_*rey -1

1)扩展你的应用程序类

public class MyApplication extends Application {

@Override
public void onCreate() {
    super.onCreate();

    try {
        ViewConfiguration config = ViewConfiguration.get(this);
        Field menuKeyField = ViewConfiguration.class.getDeclaredField("sHasPermanentMenuKey");
        if(menuKeyField != null) {
            menuKeyField.setAccessible(true);
            menuKeyField.setBoolean(config, false);
            }
        } catch (Exception ex) {
            // Ignore
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

2)添加到清单:

<application
    ...
    android:name=".MyApplication">
Run Code Online (Sandbox Code Playgroud)