Как установить атрибут веса динамически из кода Котлина?

Как я могу установить значение атрибута layout_weight для LinerLayout в android динамически из кода Kotlin?

var orange : LinearLayout = findViewById(R.id.orangeLineFiveStars) as LinearLayout 

Правильно ли это код? [Это не работает в моем приложении]

  var orangeParams : LinearLayout.LayoutParams = LinearLayout.LayoutParams( LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT) orangeParams.weight = 0.33f orange.layoutParams = orangeParams 

Этот код тоже не работает

 var orange.layoutParams = LinearLayout.LayoutParams( LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT,0.33f) 

XML:

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context="com.sanke.ilafedoseev.raitmyworkstatistic.MainActivity"> <LinearLayout android:layout_margin="10dp" android:layout_width="match_parent" android:layout_height="wrap_content"> <LinearLayout android:id="@+id/orangeLineFiveStars" android:layout_weight="1" android:layout_width="match_parent" android:layout_height="4dp" android:background="#febe40" android:orientation="horizontal"/> <LinearLayout android:id="@+id/whiteLineFiveStars" android:layout_weight="1" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"/> </LinearLayout> </LinearLayout> 

Необходимо помнить, что параметры макета передаются от дочернего к родительскому виду. Вероятно, вы захотите изменить layout_weight из некоторого дочернего элемента LinearLayout.

В вашем случае вы, вероятно, захотите сделать что-то подобное

 (orangeLineFiveStars.layoutParams as LinearLayout.LayoutParams).weight = newOrangeWeight (whiteLineFiveStars.layoutParams as LinearLayout.LayoutParams).weight = newWhiteWeight 

Может потребоваться также запросить повторную компоновку

 parentLinearLayout.requestLayout() 

Вы не можете попробовать что-то вроде этого:

  yourView.layoutParams.apply { (this as LinearLayout.LayoutParams).weight = .33f //your value for weight this.requestLayout() } 

Или

 val param = yourView.cardView.layoutParams as LinearLayout.LayoutParams param.weight = .33f yourView.layoutParams = param 
Intereting Posts
Как вызвать метод ArrayAdapter.addAll в Котлине? Невозможно использовать библиотеку kotlin Как написать надлежащий тест для реактивного репозитория интерфейса, который возвращает Observable только в том случае, когда есть какое-то событие, как издеваться над запуском этого события У меня ошибка в android с Kotlin Масштабирование детского представления имеет одинаковую высоту Как перевести java-интерфейс в kotlin Запуск HTML-редактора Kotlin в браузере Есть ли в Swift эквивалентная функция Kotlin `with`? Android – ViewDataBinding.inflate не раздувает вложенное пользовательское представление Создание WAV-файла с помощью Okio Создание исполняемой толстой баночки с град-скрипт-котлин Как упаковать родную библиотеку kotlin, чтобы ее можно было использовать в проектах Android и iOS? Проблема отзыва Котлина Jinq в Kotlin – как конвертировать лямбда в java SerializedLambda? Разница между ArrayList <String> () и mutableListOf <String> () в Котлине