View.setMargins的Kotlin扩展功能

时间:2018-12-17 06:32:51

标签: kotlin kotlin-android-extensions

我正在尝试为视图编写kotlin扩展功能以更新当前视图边距。我知道,尽管我试图创建一个通用方法并且无法理解如何通过父视图组/布局类型来处理该问题,但是同样需要更改视图的layoutParams。

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..
}

2 个答案:

答案 0 :(得分:1)

使用扩展功能时,接收器类型将成为该块内的参数this。 因此您可以像这样使用。

fun <T> View.setMargins(margin:Int){
    if (this.layoutParams is ViewGroup.MarginLayoutParams) {
        val params = this.layoutParams as ViewGroup.MarginLayoutParams
        params.setMargins(<your_margins>);
    }
}

答案 1 :(得分:0)

我认为kotlinx已经做到了,请查看