Функция расширения 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>);
    }
}

Я думаю, что kotlinx уже сделал это, проверьте это

Другие вопросы по тегам