我在操作栏(实际上是工具栏)中有一个菜单项,当单击时,会显示可供选择的项目列表,类似于单选按钮:
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:icon="@drawable/..."
android:title="@string/..."
app:showAsAction="always">
<menu>
<group
android:id="@+id/..."
android:checkableBehavior="single">
<item .../>
<item .../>
<item .../>
</group>
</menu>
</item>
</menu>
Run Code Online (Sandbox Code Playgroud)
我需要在这个项目列表下面放一个项目,它将在它和列表之间有一个分隔符.与材料设计指南显示的相似(取自此处):
编辑:这是我想要做的草图:
我找不到办法去做.
我发现的唯一可行解决方案是:
更改活动的主题(此处),但这也会影响活动的其他菜单项
菜单项出现在操作栏上时在菜单项之间放置分隔符的方法,但此处它们不会出现在工具栏本身上.它们出现在所选项目的弹出菜单上.
我试图在列表和额外项目之间放置假物品,我也尝试放置一个组,一个空组,甚至尝试了各种属性.
可悲的是没有用.
如何在动作项目的弹出菜单的特定项目之间添加分隔符?
也许我需要在单击操作项时创建自定义弹出菜单(如此处)?如果是这样,我如何在特定项目之间放置分隔符?也许使用Spinner作为动作项目?
所以我的ExpandableListView
组行定义如下:
group_row.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<TextView
android:id="@+id/GroupName"
style="@style/ListViewRowStyle"
android:paddingLeft="40dp"
android:textSize="18sp" >
</TextView>
<ImageView
android:id="@+id/Menu"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_marginTop="10dp"
android:contentDescription="@string/default_content_description_text"
android:src="@drawable/ic_menu_moreoverflow_normal_holo_light" >
</ImageView>
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)
当您单击TextView
它时,它将展开或折叠,具体取决于当前是否显示子行.我附上了OnClickListener
该ImageView
组一行.ImageView
单击此按钮时,我会启动PopupMenu
如下图像:
一旦PopupMenu
显示和动作中的一个被点击,我想在该组的所有儿童执行操作.问题是我无法确定ImageView
单击的行.
我弄清楚如何将动作应用于所有孩子的唯一方法是使用ContextMenu
如下图像:
我想避免使用a,ContextMenu
因为组行上的LongClick可能不明显,用户无法确定它会在子行上执行某些操作.我认为更明显的设计是将a锚定PopupMenu
到ImageView
(在我的情况下是菜单图标)并将操作应用于该组的子行.我怎样才能获得这个功能PopupMenu
?
android contextmenu popupmenu expandablelistview onclicklistener