如何以编程方式多次抓取元素并在同一视图中克隆它?
我在LinearLayout
中有RelativeLayout
,我想要克隆我之前在xml文件中写过的LinearLayout
,在RelativeLayout
中约10次。
这是结构:
这是代码:
<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>
答案 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"/>
再次包含新创建的布局。