我正在尝试使用支持V7库实现PopupMenu。所有编译都很好但是当我试着打电话时:
PopupMenu popup = new PopupMenu(this, v);
popup.getMenu().add(Menu.NONE,MENU_SHARE_A,1,R.string.A);
popup.getMenu().add(Menu.NONE,MENU_SHARE_B,2,R.string.B);
popup.show();
通话时出错:
07-31 17:23:53.365:E / AndroidRuntime(14128): java.lang.RuntimeException:二进制XML文件行#17:您必须提供 layout_height属性。
我认为这个元素与“abc_popup_menu_item_layout.xml”相关:
<android.support.v7.internal.view.menu.ListMenuItemView
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="?attr/dropdownListPreferredItemHeight"
android:minWidth="196dip"
android:paddingRight="16dip">
这是一个错误还是我做错了什么?
答案 0 :(得分:18)
PopupMenu popup = new PopupMenu(this, v);
什么是“这个”指的是什么?第一个参数必须是像Activity这样的上下文,而不是ApplicationContext !!
答案 1 :(得分:14)
您可能想要检查清单文件中是否指定了适当的主题:
<application ... android:theme="@style/Theme.AppCompat">
答案 2 :(得分:1)
将此行添加到 manifest.xml
中的Activityandroid:theme="@style/Theme.AppCompat"
答案 3 :(得分:0)
您的布局文件“abc_popup_menu_item_layout.xml”已经显示了已定义的高度。
“?attr / dropdownListPreferredItemHeight”来自不同的主题或库(例如ActionBarSherlock),或者错误来自不同的布局文件。
另外,如果换掉“?attr / dropdownListPreferredItemHeight”之类的“60dp”,错误会消失吗?
答案 4 :(得分:0)
@ style / Theme.AppCompat.Light为我解决了这个问题。 @ style / Theme.AppCompat是一个黑暗的主题,它不适合我的应用程序。
答案 5 :(得分:0)
还要检查manifest.xml中的每个活动中是否还有其他样式。这将覆盖应用程序标记中的Theme.AppCompat。