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

时间:2015-08-12 14:54:42

标签: android android-linearlayout shortcut android-layout-weight

是否有任何捷径可以让LinearLayout给予所有孩子相同的权重?

我需要动态地将视图添加到线性布局中,并且我希望对所有这些布局赋予相同的权重。有没有办法解决这个问题,而不是以编程方式将layoutparams添加到所有子项,然后以编程方式将布局的weightSum设置为布局中的元素数量?

3 个答案:

答案 0 :(得分:1)

为此,您可以通过为线性布局内的所有视图提供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>

答案 1 :(得分:0)

以下是您可以尝试的一些代码:

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);
}

答案 2 :(得分:0)

好的,结果是weightSum是 OPTIONAL ,这意味着我可以将所有元素的权重设置为1,并且永远不需要触摸weightSum参数。 谢谢你们的帮助!