2

我想设置一个样式,PopupMenu不幸的是,如果我尝试在 Holo 中禁用 ActionBar 和 Title,我会遇到一个奇怪的问题

<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 的设备中

在此处输入图像描述

而且我无法使用 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();
    }
};

但如果我不使用充气机并仅通过代码手动添加菜单条目,则不会。

我该如何解决这个问题?还有其他解决方案吗?

4

2 回答 2

0

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

于 2013-07-12T01:09:02.253 回答
0

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

目标dkversion - 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/values/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/values-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>
于 2013-07-13T05:00:09.323 回答