Kotlin:如何使用Anko DSL制作工具栏菜单?
问题描述:
如何直接在UI类中使用Anko DSL制作Android工具栏菜单? 不想在我的Activity类中编写侦听器。Kotlin:如何使用Anko DSL制作工具栏菜单?
关于我下面给出的答案,有没有办法避免XML recource文件来描述菜单项?
答
在的AndroidManifest.xml文件选择主题没有动作条
创建您的菜单XML资源文件和往常一样:
<menu ...>
<item
android:id="@+id/action1"
android:title="Action1"/>
<item
android:id="@+id/action2"
android:title="Action2"/>
</menu>
对于菜单的每个项目创建自定义activites
创建主要活动类别:
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<ActivityMain> {
override fun createView(ui: AnkoContext<ActivityMain>) = 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<Activity1>()
true
}
R.id.action_2 -> {
startActivity<Activity2>()
true
}
else -> false
}
}
}.lparams(width = matchParent, height = wrapContent)
}.lparams(width = matchParent, height = wrapContent)
// put other views
}
}
}