我想以编程方式向Android的屏幕菜单添加选项,我看到了几个示例,但所有示例都针对一个按钮。
假设我有。
override fun onCreateOptionsMenu(menu: Menu, menuInflater: MenuInflater) {
menu.clear()
// need add submenu this menu1
// Menu1 (I do not what options the API will release for that user)
val menu1 = menu
.add(Menu.NONE, 1, Menu.NONE, null)
.setIcon(R.drawable.ic_add_round_white)
.setShowAsActionFlags(MenuItem.SHOW_AS_ACTION_IF_ROOM)
// need add submenu this menu2
// Menu2 (I do not what options the API will release for that user)
val menu2 = menu
.add(Menu.NONE, 2, Menu.NONE, null)
.setIcon(R.drawable.ic_edit_white)
.setShowAsActionFlags(MenuItem.SHOW_AS_ACTION_IF_ROOM)
// i want add submenuA in menu1 and submenuB menu2
}
我想为这两个按钮创建子菜单,原因之一是这些选项由我的API提供,即我有2个按钮,并且对于每个按钮,我都有来自服务器的选项列表。
我可以列出一个按钮的列表,但是有2个我没有找到解决方法。
示例: 看到我的.GIF,我想要一个完全像这样的菜单(通过编程)
答案 0 :(得分:0)
您可以修复菜单项,然后为每个菜单项设置PopupMenu
。这是一个例子。
override fun onCreateOptionsMenu(menu: Menu?): Boolean {
menu?.add(0,0,0,"Menu")?.setIcon(R.drawable.icon)?.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS)
return super.onCreateOptionsMenu(menu)
}
然后:
override fun onOptionsItemSelected(item: MenuItem?): Boolean {
if (item?.itemId == 0) {
val popup = PopupMenu(this, item.actionView)
popup.menuInflater.inflate(R.menu.my_menu, popup.menu)
popup.setOnMenuItemClickListener {
//do something with submenu
true
}
popup.show() // show the popup
return true
}
return super.onOptionsItemSelected(item)
}