以编程方式更改子framelayout高度,宽度,重力?
我有linearlayout作为parent和framelayout作为孩子现在我想以编程方式更改framelayout的高度和宽度
代码我试过但根本没有效果
public void frame_params(FrameLayout bottomFrameLayout, int weight, int height) {
bottomFrameLayout = new FrameLayout(context);
LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(weight, height);
lp.gravity = Gravity.BOTTOM | Gravity.LEFT;
bottomFrameLayout.setLayoutParams(lp);
}
XML
<LinearLayout
android:orientation="horizontal"
android:id="@+id/relativelayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_above="@+id/hv_effect"
android:layout_below="@+id/effect_hedaer_toolbar">
<FrameLayout
android:id="@+id/FrameLayout"
android:layout_width="280dp"
android:layout_height="300dp"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:layout_centerInParent="true"
android:layout_gravity="bottom|left">
</FrameLayout>
</Linearlayout>
答案 0 :(得分:0)
我相信这一行是你的问题:
bottomFrameLayout = new FrameLayout(context);
在frame_params
方法中,您会收到FrameLayout
。但是,然后,您使用该行实例化一个新的。因此,确实,LinearLayout中的FrameLayout将以相同的方式继续,因为您没有更改它,您正在创建一个新的FrameLayout并且您正在为它设置参数。只需尝试删除上述行,如下所示:
public void frame_params(FrameLayout bottomFrameLayout, int weight, int height) {
LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(weight, height);
lp.gravity = Gravity.BOTTOM | Gravity.LEFT;
bottomFrameLayout.setLayoutParams(lp);
}
然后,传递正确的FrameLayout(具有id“FrameLayout”的那个,如xml中所指定的),它应该可以工作。
让我知道它是否有效,如果确实如此,请记得upvote / select为正确答案,欢呼:)