Android LinearLayout 中所有元素的相同权重的快捷方式

shortcut for equal weights to all elements in Android LinearLayout

有没有什么捷径可以让 LinearLayout 的所有子元素具有相同的权重?

我需要向线性布局动态添加视图,并且我想为所有视图赋予相同的权重。有什么方法可以做到这一点,而不是以编程方式将 layoutparams 添加到所有子项,然后以编程方式将布局的 weightSum 设置为布局内的元素数量?

为此,您可以为线性布局赋予权重和,并通过为线性布局内的所有视图赋予 layout_weight 将其分成相等的部分。例如:

<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="horizontal"
android:weightSum="3">
<View
android:layout_width="0dp"
android:layout_height="30dp"
android:layout_weight="1"
/>
<View
android:layout_width="0dp"
android:layout_height="30dp"
android:layout_weight="1"
/>
<View
android:layout_width="0dp"
android:layout_height="30dp"
android:layout_weight="1"
/>
</LinearLayout>

您可以尝试以下代码:

LinearLayout ll = (LinearLayout)findViewById(R.id.linearlayout);
int childcount = ll.getChildCount();
for (int i=0; i < childcount; i++){
    View v = ll.getChildAt(i);
    LinearLayout.LayoutParams loparams = (LinearLayout.LayoutParams)  v.getLayoutParams();

    // Set only target params:
    loparams.height = 0;
    loparams.weight = 1;
    v.setLayoutParams(loparams);
}

好的,事实证明 weightSum 是 OPTIONAL,这意味着我可以将所有元素的权重设置为 1,而无需触及 weightSum 参数。 谢谢你们的帮助!