13

我正在尝试使用 Support V7 Library 实现 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">

这是一个错误还是我做错了什么?

4

6 回答 6

18
PopupMenu popup = new PopupMenu(this, v);

“这个”指的是什么?第一个参数必须是像Activity这样的上下文,而不是ApplicationContext!!

于 2013-10-11T16:12:42.450 回答
14

您可能需要检查清单文件中是否指定了适当的主题:

<application ... android:theme="@style/Theme.AppCompat">
于 2013-08-09T19:12:34.333 回答
1

将此行添加到manifest.xml中的 Activity

android:theme="@style/Theme.AppCompat"
于 2014-03-10T14:09:42.193 回答
0

您的布局文件“abc_popup_menu_item_layout.xml”已显示定义的高度。

"?attr/dropdownListPreferredItemHeight" 来自不同的主题或库(例如 ActionBarSherlock),或者错误来自不同的布局文件。

此外,如果您将“?attr/dropdownListPreferredItemHeight”换成“60dp”之类的内容,错误会消失吗?

于 2013-08-09T19:16:52.657 回答
0

还要检查 manifest.xml 中的每个活动中是否应用了另一种样式。这将覆盖应用程序标签中的 Theme.AppCompat。

于 2014-07-05T06:45:25.160 回答
0

@style/Theme.AppCompat.Light 为我解决了这个问题。@style/Theme.AppCompat 是一个深色主题,它不适合我的应用程序。

于 2013-12-21T12:46:40.067 回答