以编程方式添加菜单选项

时间:2018-07-19 16:42:37

标签: android kotlin

我想以编程方式向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,我想要一个完全像这样的菜单(通过编程)

enter image description here

1 个答案:

答案 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)

}