Подтвердить что ты не робот

Всплывающее меню библиотеки поддержки Android V7

Я пытаюсь реализовать PopupMenu с помощью библиотеки поддержки V7. Все компилируются нормально, но когда я пытаюсь позвонить:

    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">

Является ли это ошибкой или что-то не так?

4b9b3361

Ответ 1

Возможно, вы захотите проверить, есть ли у вас соответствующая тема, указанная в вашем файле манифеста:

<application ... android:theme="@style/Theme.AppCompat">

Ответ 2

PopupMenu popup = new PopupMenu(this, v);

что "this" означает? первый параметр должен быть контекстом, например Activity, а не ApplicationContext!!

Ответ 3

Добавьте эту строку в свою деятельность внутри manifest.xml

android:theme="@style/Theme.AppCompat"

Ответ 4

В вашем файле макета "abc_popup_menu_item_layout.xml" уже указана высота.

Либо "? attr/dropdownListPreferredItemHeight" - это что-то из другой темы или библиотеки (например, ActionBarSherlock), или ошибка возникает из другого файла макета.

Кроме того, если вы замените "? attr/dropdownListPreferredItemHeight" на что-то вроде "60dp", ошибка исчезнет?

Ответ 5

@style/Theme.AppCompat.Light избавил меня от этой проблемы. @style/Theme.AppCompat - темная тема, она не подходит для моего приложения.

Ответ 6

Также проверьте, есть ли другой стиль, который применяется в каждом действии в manifest.xml. Это переопределит Theme.AppCompat в теге приложения.