2017-10-14 10 views
0

Comment faire le menu barre d'outils Android avec Anko DSL directement dans la classe d'interface utilisateur? Je ne veux pas écrire d'écouteurs dans ma classe d'activité.Kotlin: Comment faire un menu barre d'outils avec Anko DSL?

En ce qui concerne ma réponse donnée ci-dessous, existe-t-il un moyen d'éviter le fichier de ressource XML pour décrire les éléments de menu?

Répondre

0

Dans AndroidManifest.xml fichier sélectionner le thème sans ActionBar

Créez votre fichier de ressources XML de menu comme d'habitude:

<menu ...> 
    <item 
    android:id="@+id/action1" 
    android:title="Action1"/> 
    <item 
    android:id="@+id/action2" 
    android:title="Action2"/> 
</menu> 

Pour chaque élément dans le menu créer votre commande activites

Créer la classe d'activité principale:

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 
     } 

    } 

}