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 参数。
谢谢你们的帮助!
有没有什么捷径可以让 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 参数。 谢谢你们的帮助!