在同一父布局中动态克隆LinearLayout及其内容

时间:2015-03-13 15:10:52

标签: android

如何以编程方式多次抓取元素并在同一视图中克隆它? 我在LinearLayout中有RelativeLayout,我想要克隆我之前在xml文件中写过的LinearLayout,在RelativeLayout中约10次。

这是结构:
enter image description here

这是代码:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/bg_android"
    android:weightSum="1">

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:layout_margin="10dp"
        android:id="@+id/relativeLayout">

        <ImageView
            android:layout_width="180dp"
            android:layout_height="62dp"
            android:id="@+id/imageView2"
            android:src="@drawable/cartuxa_logo"
            android:layout_alignParentTop="true"
            android:layout_alignParentLeft="true"
            android:layout_alignParentStart="true" />

        <ImageButton
            android:layout_width="30dp"
            android:layout_height="30dp"
            android:id="@+id/menu_btn"
            android:layout_centerVertical="true"
            android:layout_alignParentRight="true"
            android:layout_alignParentEnd="true"
            android:background="@drawable/menu_icon" />

    </RelativeLayout>

    <LinearLayout
        android:orientation="horizontal"
        android:layout_width="fill_parent"
        android:layout_height="230dp"
        android:gravity="left"
        android:id="@+id/linearLayout_ID"
        android:layout_below="@+id/relativeLayout"
        android:layout_alignLeft="@+id/relativeLayout"
        android:layout_alignStart="@+id/relativeLayout">

        <ImageView
            android:layout_width="120dp"
            android:layout_height="120dp"
            android:id="@+id/ll_preview_ID"
            android:background="#ff393939"
            android:layout_marginRight="4dp" />

        <ImageView
            android:layout_width="100dp"
            android:layout_height="fill_parent"
            android:id="@+id/ll_image_ID"
            android:background="#ff767676"
            android:contentDescription="@string/dfg" />


    </LinearLayout>


</RelativeLayout>

2 个答案:

答案 0 :(得分:3)

我建议您为希望在relativelayout中添加的文件创建单独的布局XML文件。 执行此操作后,您可以以这种方式添加布局

LayoutInflater inflater = (LayoutInflater)getBaseContext() .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
 RelativeLayout main =(RelativeLayout)findViewById(R.id.layout1); 

for(int i=0;i<9;i++){ 
View view = inflater.inflate(R.layout.sub_layout, null);
 main.addView(view);
 }

答案 1 :(得分:0)

在Eclipse中,您可以右键单击布局并使用提取包含选项。 (您也可以手动执行此操作。)它会将您的布局提取到单独的XML中,这样您就可以使用<include layout="@layout/yourlayout"/>再次包含新创建的布局。