I have a vertical LinearLayout LL_p with two horizontal children LinearLayouts LL_1 and LL_2, which, in turn, have their own children. Based on the visible contents of LL_1 and LL_2, I want to dynamically change their relative weight inside LL_p. I already have an xml layout with a lot of details that I donβt want to lose, so I just need to make an incremental change in the weights. How should I do it? Here is my xml
β¦
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="0.2"
android:orientation="vertical" >
<LinearLayout
android:id="@+id/ll_1"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="0.55"
android:background="@drawable/some_image"
android:orientation="vertical" >
<!β- a number of includes β>
</LinearLayout>
<LinearLayout
android:id="@+id/ll_2"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="0.45"
android:layout_marginBottom="@dimen/dim_1"
android:background="@color/some_color"
android:orientation="horizontal" >
<!β- a number of children β>
</LinearLayout>
</LinearLayout>
</LinearLayout>
, java , . , , xml; getLayoutParams xml. , ?
private void adjustMYLayout(boolean flip) {
LayoutParams layout1 = mLL1.getLayoutParams();
LayoutParams layout2 = mBLL2.getLayoutParams();
if(flip) {
}else {
}
}
UPDATE @nKn
private void adjustMYLayout(boolean flip) {
if (flip) {
mLL1.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT, 0.8f));
mLL2.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT, 0.2f));
} else {
mLL1.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT, 0.55f));
mLL2.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,LinearLayout.LayoutParams.WRAP_CONTENT, 0.45f));
}
}