我正在尝试为视图编写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..
}
答案 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已经做到了,请查看