2
我一直在这个工作一段时间。我正在尝试创建一个PopupMenu,其中最上面的项目看起来不同于其他所有项目 - 实质上是包含标题的标题项目。Android - 添加自定义布局弹出菜单项
我已经尝试为该项目设置一个android:actionLayout,将该特定项目链接到应生成所需布局的xml文件。但是,这似乎完全没有影响。从那里我试图以编程方式设置actionView - 创建一个自定义视图,然后将其设置为该项目。仍然没有效果。
我在这里完成了研究,看起来至少有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,正如一些人所建议的那样。另外请注意,我不想为此使用上下文菜单。
在此先感谢!
嗯......也许不工作,因为此PopupMenu不是在动作条 - 它锚定到一个标准按钮。 – Warblr 2014-12-06 20:56:28
可能不得不使用ListPopupWindow - PopupMenu在自定义方面似乎不太灵活... – Warblr 2014-12-07 19:40:19
使用popup而不是ContextMenu? – 2015-02-19 07:37:57