View.setMargins 的 Kotlin 扩展函数
Kotlin extension function for View.setMargins
我正在尝试为视图编写一个 kotlin 扩展函数来更新当前视图边距。我知道你同样需要更改视图的布局参数,尽管我正在尝试创建一个通用方法并且无法理解如何传递父视图组/布局类型来处理这个问题。
fun <T> View.setMargins(margin:Int){
var lp = // don't know how to get layout params here
// how to get RelativeLayout.LayoutParams or ViewGroup.LayoutParams etc..
// if I do this.layoutParams then I am unable to call setMargins function on that since it is only available for RelativeLayout.LayoutParams / VeiwGroup.LayoutParams etc etc..
}
当您使用扩展函数时,您的 接收器类型 将成为该块内的 this
参数。
所以你可以这样使用。
fun <T> View.setMargins(margin:Int){
if (this.layoutParams is ViewGroup.MarginLayoutParams) {
val params = this.layoutParams as ViewGroup.MarginLayoutParams
params.setMargins(<your_margins>);
}
}
我认为 kotlinx 已经完成了,检查一下
我正在尝试为视图编写一个 kotlin 扩展函数来更新当前视图边距。我知道你同样需要更改视图的布局参数,尽管我正在尝试创建一个通用方法并且无法理解如何传递父视图组/布局类型来处理这个问题。
fun <T> View.setMargins(margin:Int){
var lp = // don't know how to get layout params here
// how to get RelativeLayout.LayoutParams or ViewGroup.LayoutParams etc..
// if I do this.layoutParams then I am unable to call setMargins function on that since it is only available for RelativeLayout.LayoutParams / VeiwGroup.LayoutParams etc etc..
}
当您使用扩展函数时,您的 接收器类型 将成为该块内的 this
参数。
所以你可以这样使用。
fun <T> View.setMargins(margin:Int){
if (this.layoutParams is ViewGroup.MarginLayoutParams) {
val params = this.layoutParams as ViewGroup.MarginLayoutParams
params.setMargins(<your_margins>);
}
}
我认为 kotlinx 已经完成了,检查一下