是否有任何捷径可以让LinearLayout给予所有孩子相同的权重?
我需要动态地将视图添加到线性布局中,并且我希望对所有这些布局赋予相同的权重。有没有办法解决这个问题,而不是以编程方式将layoutparams
添加到所有子项,然后以编程方式将布局的weightSum
设置为布局中的元素数量?
答案 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参数。 谢谢你们的帮助!