以编程方式更改子framelayout高度,宽度,重力?

时间:2016-06-24 04:58:30

标签: html android-framelayout

以编程方式更改子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> 

1 个答案:

答案 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为正确答案,欢呼:)