我实现了一个执行各种api请求的类,我的想法是该类的每个实例都有一个创建 View 的方法,以具有类似于瓦片的界面。
我的问题是我不知道如何以一种好的方式来实现它。
使用Anko和Kotlin的首选方式是什么?
最佳答案
Anko的documentation about that case非常棒(但是谁读了文档,是吗?)
示例(这就是我的用法,您可以选择其他方法):
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)
在另一个文件中:
class YourAwesomeActivity: Activity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(saveInstanceState)
relativeLayout(R.style.YourAwesomeAppTheme) {
yourAwesomeButton(R.style.YourAwesomeAppTheme) {
makeThisButtonAwesome()
}.lparams {
centerInParent()
}
}
}
}