Функция расширения Kotlin для View.setMargins - PullRequest
0 голосов
/ 17 декабря 2018

Я пытаюсь написать функцию расширения 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 ]

0 голосов
/ 17 декабря 2018

Я думаю kotlinx уже сделали это, зацените

0 голосов
/ 17 декабря 2018

Когда вы используете функцию расширения, ваш тип приемника станет параметром как this внутри этого блока.Таким образом, вы можете использовать как этот способ.

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