动态添加两个视图,一个低于另一个

时间:2012-02-24 05:48:38

标签: android

我想一个接一个地添加两个视图,我用这种方式但是我收到了一个错误。 这是我的XML。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"

 >
<ScrollView 
 android:layout_width="fill_parent"
android:layout_height="fill_parent"

>
        <RelativeLayout 
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:id="@+id/parent"


      >

              <RelativeLayout 
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:id="@+id/rel1"
                android:layout_alignParentTop="true"

              ></RelativeLayout>

                <RelativeLayout 
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:id="@+id/rel2"
                android:layout_below="@+id/rel1"                  
              ></RelativeLayout>

      </RelativeLayout>
   </ScrollView>
</RelativeLayout>

在两个相对布局rel1和rel2中,我将添加将动态绘制的自定义视图。

我的代码:

setContentView(R.layout.main);
        RelativeLayout rlstat1=(RelativeLayout)findViewById(R.id.rel1);
        RelativeLayout rlstat2=(RelativeLayout)findViewById(R.id.rel2);
        RelativeLayout.LayoutParams para1 = new       RelativeLayout.LayoutParams(
                viewWidth, viewHeight);
         RelativeLayout.LayoutParams para2 = new       RelativeLayout.LayoutParams(
                viewWidth, viewHeight);

        rlstat1.setLayoutParams(para1);
        rlstat1.addView(mView);

        para2.addRule(RelativeLayout.BELOW, R.id.rel1);
        rlstat2.addView(mView2);

这里mView和mView2是两种视图类型,我想在两个相对布局中设置它。 ViewWidth和ViewHeight是它运行的屏幕的宽度和高度。

问题: 如果只添加了一个视图,即mView或mView2,则显示但是如果两个视图都被添加(如上所述),则只显示一个相对布局。 我希望我的两个观点都设置在另一个之下。
希望我的问题清楚。请你告诉我适当的方法。

1 个答案:

答案 0 :(得分:1)

您正在为活动中的视图设置布局参数,这些是新的布局参数对象,因此您将rel2添加到rel1以下的规则将被清除,而不是尝试:

setContentView(R.layout.main);
        RelativeLayout rlstat1=(RelativeLayout)findViewById(R.id.rel1);
        RelativeLayout rlstat2=(RelativeLayout)findViewById(R.id.rel2);
        RelativeLayout.LayoutParams para1 = rlStat1.getLayoutParams();

        para1.width=LayoutParams.FILL_PARENT;
        para1.height=LayoutParams.FILL_PARENT;
         RelativeLayout.LayoutParams para2 = rlStat2.getLayoutParams();

        para2.width=LayoutParams.FILL_PARENT;
        para2.height=LayoutParams.FILL_PARENT;
        rlstat1.setLayoutParams(para1);
        rlstat1.addView(mView);

        para2.addRule(RelativeLayout.BELOW, R.id.rel1);
        rlstat2.addView(mView2);