如何以编程方式将两个relativelayouts显示为线性布局的顶部和底部,并排显示?

时间:2013-08-28 23:08:03

标签: android android-layout android-linearlayout relativelayout

我有一个linearlayout作为两个相对布局的容器。两个相对布局都出现在屏幕上,但它们是并排的。我希望他们是顶部和底部。看起来linearlayout初始化默认为Horizo​​ntal。我尝试过将setorientation用于Vertical,但屏幕显示为空白。 以下代码是我想要做的一个例子:

   LinearLayout layoutContainer = new LinearLayout(this);
    layoutContainer.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT,
            LayoutParams.FILL_PARENT));
    //layoutContainer.setOrientation(LinearLayout.VERTICAL);
    // Arguments here: width, height, weight
    LinearLayout.LayoutParams childLp = new LinearLayout.LayoutParams(0, 
            LayoutParams.FILL_PARENT, 1);

    layoutTop = new RelativeLayout(this);
    layoutContainer.addView(layoutTop, childLp);

    layoutBot = new RelativeLayout(this);
    layoutContainer.addView(layoutBot, childLp);

    layoutTop.setBackgroundColor(GREEN);
    layoutBot.setBackgroundColor(Color.BLUE);
    setContentView(layoutContainer);

2 个答案:

答案 0 :(得分:0)

  

看起来linearlayout初始化默认为Horizo​​ntal。

这是完全正确的。

  

我尝试过将setorientation用于Vertical,但屏幕显示为空白。

您需要将orientation设置为vertical才能获得此效果。至于它“空出”,我看到一些错误,例如将width设置为“0”。没有width因此它不会显示任何内容。我想你会想要像LinearLayout.WRAP_CONTENT这样的东西。此外,您对LinearLayout使用params RelativeLayout,这可能会也可能不会对此案件产生影响。

如果没有必要的理由在Java中创建layout,那么在xml中执行此操作要容易得多。

答案 1 :(得分:0)

我认为您通过尝试以编程方式操作它们使您的布局变得复杂。将方向设置为Vertical并执行以下操作:

<LinearLayout
    ------
    ------  
    android:orientation="vertical">

您的第一个相对布局

  <RelativeLayout
    android:id="@+id/rel1"
    android:layout_alignParentTop="true"
    ----------------------
    ---------------------
                   />

您的下一个相对布局

<RelativeLayout
    android:id="@+id/rel2"
    android:layout_below="@id/rel1"
    ----------------------
    ---------------------
                      />