Функция расширения Kotlin для View.setMargins
Я пытаюсь написать функцию расширения kotlin для просмотра, чтобы обновить текущее поле просмотра. Я знаю, что для того же вам нужно внести изменения в layoutParams представления, хотя я пытаюсь создать универсальный метод и не могу понять, как передать родительский тип viewgroup / layout для этого.
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 ответа
Когда вы используете функцию расширения, ваш тип приемника станет параметром this
внутри этого блока. Таким образом, вы можете использовать как этот способ.
fun <T> View.setMargins(margin:Int){
if (this.layoutParams is ViewGroup.MarginLayoutParams) {
val params = this.layoutParams as ViewGroup.MarginLayoutParams
params.setMargins(<your_margins>);
}
}