Я подозреваю, что вы теряете атрибуты относительного позиционирования при создании новых LayoutParams
объектов. Помните, что такие атрибуты, как layout_toEndOf
, являются частью параметров макета.
Попробуйте вместо этого:
val w = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 45f, resources.displayMetrics)
btn_ran.setOnClickListener {
btn_1.updateLayoutParams { this.width = w }
btn_3.updateLayoutParams { this.width = w }
btn_4.updateLayoutParams { this.width = w }
btn_2.updateLayoutParams { this.width = w }
btn_5.updateLayoutParams { this.width = w }
}
Это использует функцию расширения updateLayoutParams
, которая является частью библиотеки Core KTX. Он сохранит все, что касается LayoutParams
, но также позволит вам изменить ширину.
Если вы не можете использовать Core KTX, вы можете быть немного более подробным. Замените каждый из этих вызовов примерно таким:
val params1 = btn_1.layoutParams
params1.width = w
btn_1.layoutParams = params1