如何从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