Anko a un grand documentation about that case (Mais qui a lu docs, ouais?)
Disons que, CustomView
est votre nom de classe personnalisée View
et customView
est ce que vous voulez écrire dans le DSL.
Si vous ne prévoyez d'utiliser votre commande View
dans le DSL entouré de un autre View
:
inline fun ViewManager.customView(theme: Int = 0) = customView(theme) {}
inline fun ViewManager.customView(theme: Int = 0, init: CustomView.() -> Unit) = ankoView({ CustomView(it) }, theme, init)
Ainsi, vous pouvez maintenant écrire ceci:
frameLayout {
customView()
}
... ou ce (voir Chapitre de l'encapsulation de l'interface utilisateur):
UI {
customView()
}
Mais si vous voulez utiliser votre point de vue d'un widget de haut niveau sans emballage UI à l'intérieur Activity
, ajoutez ainsi:
inline fun Activity.customView(theme: Int = 0) = customView(theme) {}
inline fun Activity.customView(theme: Int = 0, init: CustomView.() -> Unit) = ankoView({ CustomView(it) }, theme, init)
Exemple (c'est juste comment je l'utiliser, vous pouvez choisir approche différente):
class YourAwesomeButton: Button() {
/* ... */
fun makeThisButtonAwesome() {/* ... */}
}
/** This lines may be in any file of the project, but better to put them right under the button class */
inline fun ViewManager.yourAwesomeButton(theme: Int = 0) = yourAwesomeButton(theme) {}
inline fun ViewManager.yourAwesomeButton(theme: Int = 0, init: CustomView.() -> Unit) =
ankoView({ YourAwesomeButton(it) }, theme, init)
Dans un autre fichier:
class YourAwesomeActivity: Activity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(saveInstanceState)
relativeLayout(R.style.YourAwesomeAppTheme) {
yourAwesomeButton(R.style.YourAwesomeAppTheme) {
makeThisButtonAwesome()
}.lparams {
centerInParent()
}
}
}
}
J'ai lu cette partie de la documentation, mais pour moi, il ne sait pas encore sur h Vous devez utiliser ces extraits de code. Avez-vous un exemple? – aul12
@ aul12 a ajouté un exemple –