我在kotlin中使用此代码来更新linear_layout的layout_weight作为指示。但是,当按下按钮时,布局权重不会改变。
这最终将是一个使用随机更新的有趣应用程序,但是现在我要确保代码能够正常工作。 predWt是按钮ID physWt是线性布局ID(当前设置为权重0.3)
predWt.setOnClickListener {
physWt.layoutParams.apply {
(this as LinearLayout.LayoutParams).weight = 0.85f }
}
应用程序启动OK,当按下按钮时,linearlayout的layout_weight应该从0.3更新为0.85f,但不会。 没有错误消息生成。
答案 0 :(得分:0)
您需要致电setLayoutParams
才能使更改生效:
predWt.setOnClickListener {
physWt.layoutParams.apply {
(this as LinearLayout.LayoutParams).weight = 0.85f }
physWt.setLayoutParams(this)
}
这样做的原因是该视图及其父视图不知道您修改了布局参数,通过再次设置它,View.requestLayout()
会被您调用