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 已经完成了,检查一下