我有三个片段,前两个填充80%的屏幕,最后一个填充其余的片段(这个片段永远不会改变大小).我希望,在用户(焦点)输入片段后,调整片段的大小,使其填满屏幕的70%(将10%留给另一个).像这样:
可以通过动态改变碎片的重量吗?
或者有更好的方法来实现这一目标?
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/drawer_layout" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity"> <FrameLayout android:id="@+id/container" android:layout_width="match_parent" android:layout_height="match_parent"> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:weightSum="1.0"> <FrameLayout android:id="@+id/containerParent" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight=".8"> <LinearLayout android:id="@+id/MainLinear" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" android:weightSum="1.0"> <FrameLayout android:id="@+id/fragment1" android:layout_width="fill_parent" android:layout_height="0dp" android:layout_weight=".5"/> <FrameLayout android:id="@+id/fragment2" android:layout_width="fill_parent" android:layout_height="0dp" android:layout_weight=".5"/> </LinearLayout> </FrameLayout> <FrameLayout android:id="@+id/fragment3" android:layout_width="fill_parent" android:layout_height="0dp" android:layout_weight=".2"/> </LinearLayout> </FrameLayout> </android.support.v4.widget.DrawerLayout>
解决方法
它应该是这样的:
LinearLayout.LayoutParams param = new LinearLayout.LayoutParams( LayoutParams.MATCH_PARENT,LayoutParams.MATCH_PARENT,WEIGTH_HERE);
假设WEIGHT_HERE是一个浮点数(可能需要强制转换).
(我不知道这是否是一个好方法,但它应该做你想做的)
如果你想用一个按钮或其他东西,只需要做同样的事情
重量加上并添加:
Button b = new Button(this); param.weight= (float) 0.5 // 0.5f b.setLayoutParams(param);
但是这个方法会创建一个新的布局参数,所以如果你想保持一切只是做同样但不创建一个新的布局,通过获取它来编辑现有的布局:
LinearLayout.LayoutParams mLay = (LinearLayout.LayoutParams)myLay.getLayoutParams(); mLay.weight = (float) WEIGTH // WEIGHTf