Kotlin:如何使用Anko DSL制作工具栏菜单?

如何直接在UI类中使用Anko DSL制作Android工具栏菜单? 不想在我的Activity类中写入监听器。

关于我下面给出的答案,有没有办法避免XML recource文件来描述菜单项?

AndroidManifest.xml文件中选择没有ActionBar的主题

照常创建菜单XML资源文件:

    

对于菜单中的每个项目创建您的自定义活动

创建主要活动类:

 class ActivityMain : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) ActivityMainUI().setContentView(this) //do not use setActionBar() or setSupportActionBar() } // do not override onOptionsItemSelected() and onCreateOptionsMenu() here } class ActivityMainUi: AnkoComponent { override fun createView(ui: AnkoContext) = with(ui) { coordinatorLayout { // justify layout appBarLayout { toolbar { // justify your toolbar inflateMenu(R.menu.your_menu_xml_resource) onMenuItemClick { item -> when (item!!.itemId) { R.id.action_1 -> { startActivity() true } R.id.action_2 -> { startActivity() true } else -> false } } }.lparams(width = matchParent, height = wrapContent) }.lparams(width = matchParent, height = wrapContent) // put other views } } }