J'ai lu que le plus grand avantage d'utiliser Anko est sa réutilisabilité. Mais je n'ai pas trouvé son exemple exact.Est-il possible de réutiliser une mise en page dans Kotlin Anko
Actuellement dans le nouveau système de mise en page Android, la plaque de la chaudière est comme ci-dessous:
DrawerLayout (with some setup)
CoordinatorLayout (with some setup)
AppBarLayout (with some setup)
ToolBar
<The Main Content>
NavigationView (with header inflated)
De la structure de mise en page ci-dessus, ne <The Main Content>
est Varry. Et dans de nombreux cas, cette configuration cérémonielle dupliqué presque dans chaque activité.
Donc, ici, avec Anko, je pense qu'il existe une solution réutilisable à ce problème. Je ne m'attends pas à ce qu'il soit réutilisable pour la mise en page à usage général, mais au moins je peux minimiser le code de cérémonie dans le projet. Peut-être que je besoin de quelque chose comme:
class MainUI: AnkoComponent<MainActivity> {
override fun createView(ui: AnkoContext<MainActivity>): View{
return with(ui) {
myCustomRootLayout {
//here is what <The Main Content> will be
}
}
}
}
À partir du code ci-dessus im attendant myCustomRootLayout
fera toute la configuration d'apparat pour la mise en page des racines tels que (DrawerLayout, CoordinatorLayout etc etc).
Est-ce possible?
EDIT donc je pense que ma question est: Comment faire un composant personnalisé qui peut accueillir un autre composant
merci de répondre.oui je comprends à ce sujet. mais pourrait trouver un exemple de la façon de faire un composant personnalisé qui est un conteneur de l'autre composant. Voir mon code, 'myCustomRootLayout' devrait contenir' DrawerLayout, CoordinatorLayout, AppBarLayout' etc etc, mais devrait également héberger un autre composant ''. Donc dans le futur je peux les utiliser comme: 'myCustomRootLayout {recyclerView()}' (en y ajoutant une vue recycleur) –
ktutnik
@ktutnik la méthode d'extension 'myCustomRootLayout' et la classe' MyCustomRootLayout' acceptent un délégué qui est invoqué après l'installation les éléments composants. Ce délégué peut être utilisé pour ajouter des éléments enfants personnalisés, c'est-à-dire 'recyclerView()' – miensol
Je me soucie de la position de l'enfant inséré. Y a-t-il un effort à faire pour que les enfants soient les enfants de CoordinatorLayout par rapport à la vue racine? – ktutnik