动态创建并添加framelayouts android

时间:2013-03-11 08:59:36

标签: java android android-layout android-framelayout

我创建了一个framelayout,按钮内有一个按钮和3个textviews。我想复制它并通过java程序一个接一个地动态添加它们。

附上相同的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">
  <FrameLayout android:id="@+id/frameLayout1" android:layout_width="wrap_content" android:layout_height="wrap_content">        
    <Button android:layout_width="319dp" android:layout_height="130dp"/>
    <TextView android:id="@+id/textView1" android:layout_width="wrap_content"
        android:layout_gravity="center_horizontal" 
        android:layout_marginTop="15dp"
        android:layout_height="wrap_content" android:text="@string/app_name"/>
    <TextView android:id="@+id/textView2" 
        android:layout_gravity="center_horizontal" 
        android:layout_marginTop="45dp"
        android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/app_name"/>
    <TextView android:id="@+id/textView3" 
        android:layout_gravity="center_horizontal" 
        android:layout_marginTop="75dp"
        android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/app_name"/>  
  </FrameLayout>
  <FrameLayout android:id="@+id/frameLayout2" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content"
      android:layout_below="@id/frameLayout1">        
    <Button android:layout_width="319dp" android:layout_height="130dp"/>
    <TextView android:id="@+id/textView4" android:layout_width="wrap_content"
        android:layout_gravity="center_horizontal" 
        android:layout_marginTop="15dp"
        android:layout_height="wrap_content" android:text="@string/app_name"/>
    <TextView android:id="@+id/textView5" 
        android:layout_gravity="center_horizontal" 
        android:layout_marginTop="45dp"
        android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/app_name"/>
    <TextView android:id="@+id/textView6" 
        android:layout_gravity="center_horizontal" 
        android:layout_marginTop="75dp"
        android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/app_name"/>  
  </FrameLayout> 
</RelativeLayout>

此复制的Java代码并附加到末尾,由

给出
FrameLayout f2 = (FrameLayout)findViewById(R.id.frameLayout2);
        FrameLayout f3;
        f3 = f2;
        RelativeLayout.LayoutParams p = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,
                ViewGroup.LayoutParams.WRAP_CONTENT);
        p.addRule(RelativeLayout.BELOW, R.id.frameLayout2);
        f3.setLayoutParams(p);

我希望第三帧布局放在第二帧布局下面,但运行此代码,第二帧布局也不可见,有人能告诉我哪里出错了吗?

1 个答案:

答案 0 :(得分:1)

您必须在单独的button_and_text.xml文件中提取框架布局,然后使用include tag

<RelativeLayout ...>
    <include layout="@layout/button_and_text" android:id="@+id/frameLayout1"/>
    <include layout="@layout/button_and_text" android:id="@+id/frameLayout2" android:layout_below="@id/frameLayout1"/>