Sow*_*ber 1 extension-methods android android-view kotlin kotlin-extension
我正在尝试在 Kotlin 中创建一个扩展函数。我确实尝试了几个教程,但不太明白如何实现这个教程。
我正在尝试创建一个setWidth()这样的函数
//Find my_view in the fragment
val myView = v.findViewById<RelativeLayout>(R.id.my_view)
//Then use the extension function
myView.setNewWidth(500)
Run Code Online (Sandbox Code Playgroud)
这就是我定义扩展函数的方式
private fun View?.setNewWidth(i: Int) {
val layoutParams: ViewGroup.LayoutParams = View.layoutParams
layoutParams.width = i
View.layoutParams = layoutParams
}
Run Code Online (Sandbox Code Playgroud)
我不明白我需要在这里做什么。
我想将扩展函数称为myView.ExtensionFunction(),但我不知道该怎么做。教程内容不详。
我认为这里的主要问题是如何定义扩展函数,特别是具有的行- 这是调用不存在的View.layoutParams静态属性。View您需要使用实例中的一个。如果您像这样编写扩展函数:
private fun View?.setNewWidth(i: Int) {
val layoutParams = this?.layoutParams
layoutParams?.width = i
this?.layoutParams = layoutParams
}
Run Code Online (Sandbox Code Playgroud)
然后你就可以调用你想要的方法了。就我个人而言,我觉得这不太可读,我会删除这里的可空性并将其写为:
private fun View.setNewWidth(i: Int) {
val newLayoutParams = layoutParams
newLayoutParams?.width = i
layoutParams = newLayoutParams
}
Run Code Online (Sandbox Code Playgroud)
唯一的区别是,现在您需要?.在视图可为空时调用该方法,我个人认为这很好 - myView?.setNewWidth(123)。我假设大多数时候您不会有可为空的视图。
| 归档时间: |
|
| 查看次数: |
1840 次 |
| 最近记录: |