用于更新layout_weight的按钮无效

时间:2019-07-25 15:21:12

标签: kotlin layoutparams

我在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,但不会。 没有错误消息生成。

1 个答案:

答案 0 :(得分:0)

您需要致电setLayoutParams才能使更改生效:

    predWt.setOnClickListener {
    physWt.layoutParams.apply {
        (this as LinearLayout.LayoutParams).weight = 0.85f }
        physWt.setLayoutParams(this)
    }

这样做的原因是该视图及其父视图不知道您修改了布局参数,通过再次设置它,View.requestLayout()会被您调用