2017-10-14 2 views
0

Anko DSLでAndroidツールバーメニューをUIクラスで直接作成する方法は? アクティビティクラスにリスナーを書きたくありません。Kotlin:Anko DSLでツールバーメニューを作成するには?

私の答えは以下の通りですが、メニュー項目を記述するためにXML recourceファイルを避ける方法はありますか? のAndroidManifest.xmlファイルで

答えて

0

は、アクションバー

せずにテーマを選択するいつものようにあなたのメニュー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 
     } 

    } 

} 
関連する問題