0
Anko DSLでAndroidツールバーメニューをUIクラスで直接作成する方法は? アクティビティクラスにリスナーを書きたくありません。Kotlin:Anko DSLでツールバーメニューを作成するには?
私の答えは以下の通りですが、メニュー項目を記述するためにXML recourceファイルを避ける方法はありますか? のAndroidManifest.xmlファイルで
Anko DSLでAndroidツールバーメニューをUIクラスで直接作成する方法は? アクティビティクラスにリスナーを書きたくありません。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
}
}
}