Я работаю над этим некоторое время. Я пытаюсь создать PopupMenu, самый верхний элемент которого выглядит иначе, чем все остальные элементы - по сути, элемент заголовка, содержащий заголовок.
Я попытался установить android:actionLayout для этого элемента, связав этот конкретный элемент с файлом xml, который должен создать желаемый макет. Однако, похоже, это не имеет абсолютно никакого эффекта. Оттуда я попытался программно установить actionView - создать собственное представление, а затем установить его для элемента. Все равно никакого эффекта.
Я провел здесь исследование SO и просмотрел не менее 10 руководств; может быть, я сегодня просто отстой в гугле, но я не могу найти способ сделать это.
Вот моя последняя попытка:
// * my_menu.xml
<menu
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<group
android:id="@+id/menu_title_group" >
<item
android:id="@+id/menu_title_item"
android:title=""
app:actionLayout="@layout/popup_menu_title_header_layout" />
</group>
</menu>
А потом...
// * popup_menu_title_header_layout.xml
<?xml version="1.0" encoding="utf-8"?>
<TextView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/popup_menu_title_header_text_view"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_marginStart="8dp"
android:layout_marginLeft="8dp"
android:layout_marginEnd="8dp"
android:layout_marginRight="8dp"
android:gravity="center"
android:background="@color/red"
android:textColor="@color/gray"
android:textSize="16sp"/>
А потом...
// * ShowPopupMenu.Activity
PopupMenu popup = new PopupMenu(getActivity(), showMenuButton);
popup.getMenuInflater().inflate(R.menu.my_menu, popup.getMenu());
popup.getMenu().findItem(R.id.menu_title_item).setTitle(some_dynamic_string);
popup.getMenu().add(1,0,0,"some_dynamic_option_title_1");
popup.getMenu().add(1,1,0,"some_dynamic_option_title_2");
... всплывающее меню отображается точно так, как ожидалось, однако верхний элемент вообще не затрагивается actionLayout. Обратите внимание, что я пытался использовать app:actionLayout, как некоторые предлагали. Также обратите внимание, я не хочу использовать для этого контекстное меню.
Заранее спасибо!
PopUpWindow
, если требуется настройка - person PPartisan   schedule 29.07.2019