如果禁用标题和操作栏,则无法设置弹出菜单样式

时间:2013-07-04 15:15:18

标签: android android-layout android-styles

我想为PopupMenu设置样式,不幸的是,如果我尝试使用

禁用ActionBar和Holo中的标题,我将面临一个奇怪的问题
<style name="MyTheme" parent="android:Theme.Holo.Light">
    <item name="android:windowActionBar">false</item>
    <item name="android:windowNoTitle">true</item>
<style>

如果我直接使用Theme.NotitleBar而不是Holo

,结果相同

所有弹出菜单都以这种方式显示在带有ICS或JellyBean的设备中

enter image description here

我无法使用styles.xml

更改背景和字体颜色

修改

我注意到如果我以这种方式添加菜单会发生此错误

OnClickListener showMenu= new OnClickListener() {
    public void onClick(View v) {
        PopupMenu popup = new PopupMenu(getBaseContext(), v);
        popup.getMenuInflater().inflate(R.my_menu,
                popup.getMenu());
        popup.setOnMenuItemClickListener(new OnMenuItemClickListener() {
            @Override
            public boolean onMenuItemClick(MenuItem item) {
                switch (item.getItemId()) {
                                    ....

                }

                return true;
            }
        });

        /** Showing the popup menu */
        popup.show();
    }
};

但是如果我不使用inflater并且仅通过代码手动添加菜单条目就不行。

我怎么能解决这个问题?还有其他解决方案吗?

2 个答案:

答案 0 :(得分:0)

我使用了示例代码here并更改了样式。它只改变了main.xml中的背景而不是PopupMenu,但是我在模拟器上测试了我不确定会有什么不同。

答案 1 :(得分:0)

请注意,popover仅在目标API 11或更高版本之后可用。 为了便于使用,我总是将targetsdkversion和项目构建目标设置为相同且高于11(尽管它们不必严格相同)。

targetsdkversion - manifest.xml

<uses-sdk android:minSdkVersion="8" />
<uses-sdk android:targetSdkVersion="16"/>

项目构建目标

Right click on the project -> properties -> android ->project build target (4.1)

此外,不要编辑res / values / styles.xml,而是尝试更改res / values-v11 / styles.xml:

RES /值/ styles.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="MainTheme" parent="@android:style/Theme.Light.NoTitleBar">
        *Your style definitions for versions targeting < API version 11*
    </style>
</resources>

RES /值-V11 / styles.xml:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="MainTheme" parent="@android:style/Theme.Holo">
     *your style definitions for the popup menu within versions 11-14*
     <item name="android:popupMenuStyle">...</item>
     <item name="android:popupAnimationStyle">...</item>
     <item name="android:popupBackground">...</item>
    </style>
</resources>