我想为PopupMenu
设置样式,不幸的是,如果我尝试使用
<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();
}
};
但是如果我不使用inflater并且仅通过代码手动添加菜单条目就不行。
我怎么能解决这个问题?还有其他解决方案吗?
答案 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>