gpt4 book ai didi

kotlin - 如何将自定义 View 组添加到 Anko DSL?

转载 作者:IT老高 更新时间:2023-10-28 13:40:11 26 4
gpt4 key购买 nike

Anko docs告诉我们如何向 DSL 添加自定义 View 。但是如果我的自定义 View 是 View 组,就会出现问题。

class MyFrameLayout(context: Context) : FrameLayout(context)

fun ViewManager.myFrameLayout(init: MyFrameLayout.() -> Unit = {}) = ankoView({ MyFrameLayout(it) }, init)

class MyUI : AnkoComponent<Fragment> {
override fun createView(ui: AnkoContext<Fragment>) = with(ui) {

myFrameLayout {
textView("hello").lparams { // error: Unresolved reference: lparams
bottomMargin = dip(40)
}
}
}
}

但如果我将 myFrameLayout 调用更改为 frameLayout 它可以正常工作。那么让 View 组与 Anko DSL 一起使用的正确方法是什么?

最佳答案

实际上你只需要扩展 anko 并声明你的 customview 然后在 DSL 中正常使用它:

public inline fun ViewManager.customView() = customView {}
public inline fun ViewManager.customView(init: CustomView.() -> Unit) = ankoView({ CustomView(it) }, init)

然后在DSL中正常使用

frameLayout {
customView()
}

关于kotlin - 如何将自定义 View 组添加到 Anko DSL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35651866/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com