Create UIs with readable Kotlin code.
https://github.com/LouisCAD/Splitties/tree/main/modules/views-dsl
// 构造一个 Button:传递要设置的id
// You should use `button { … }` instead though.
val submitBtn = view<Button>(R.id.btn_submit) {
textResource = R.string.submit
}
val launchDemoBtn = button {
textResource = R.string.go_to_the_demo
}
代码
// 构造自定义的View:传递构造函数、要设置的id
val myView: MyCustomView = view(::MyCustomView, R.id.my_view) {
backgroundColor = Color.BLACK
}
定义
typealias NewViewRef<V> = (Context) -> V
// 扩展方法:所以不用传 Context 对象
inline fun <V : View> Context.view(
createView: NewViewRef<V>,
@IdRes id: Int = View.NO_ID,
@StyleRes theme: Int = NO_THEME,
initView: V.() -> Unit = {}
): V {
...
}
知识
// 将函数作为参数或者返回函数的函数叫高阶函数
fun 高阶函数名(参数函数名:参数函数类型):高阶函数返回类型{
高阶函数体
...
}
// 定义一个高阶函数
fun cacl(a:Int, b:Int, action:(Int,Int)->Int):Int{
return action(a,b)
}
// 调用上面高阶函数
var sum = cacl(20, 30, { m, n ->
m + n
})
讲解
view(::MyCustomView, R.id.my_view)
的参数一正是函数类型引用参数,这里使用构造函数作为参数传递。typealias NewViewRef<V> = (Context) -> V
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。