如何从Kotlin代码动态设置权重属性?

我怎样才能从Kotlin代码动态地设置LinerLayout属性layout_weight的值?

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的某个子项的layout_weight

在你的情况下,你可能想要做这样的事情

 (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 }.requestLayout() 

要么

 val param = yourView.cardView.layoutParams as LinearLayout.LayoutParams param.weight = .33f yourView.layoutParams = param