So fügen Sie eine Kopie von XML dynamisch hinzu
Ich erstelle eine Android-App und möchte XML-Code in ein lineares Layout kopieren und ihn erneut in das lineare Layout einfügen, sodass zwei der relativen Layouts im linearen Layout vorhanden sind. Ich möchte dies dynamisch tun, indem ich diesen Code unten nehme:
<LinearLayout
android:id="@+id/tileContainerME"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<RelativeLayout
android:id="@+id/tilesAreHERE"
android:layout_width="207dp"
android:layout_height="151dp" >
<TextView
android:id="@+id/bottom1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/top1"
android:layout_alignParentBottom="true"
android:gravity="center_horizontal"
android:text="1"
/>
<TextView
android:id="@+id/left1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_centerVertical="true"
android:gravity="center_vertical"
android:text="2"
/>
<TextView
android:id="@+id/right1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/left1"
android:layout_alignBottom="@+id/left1"
android:layout_alignParentRight="true"
android:gravity="center_vertical"
android:text="3"
/>
<TextView
android:id="@+id/top1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:gravity="center_horizontal"
android:text="4"
/>
</RelativeLayout>
</LinearLayout>
Und dann einfach so machen:
<LinearLayout
android:id="@+id/tileContainerME"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<RelativeLayout
android:id="@+id/tilesAreHERE"
android:layout_width="207dp"
android:layout_height="151dp" >
<TextView
android:id="@+id/bottom1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/top1"
android:layout_alignParentBottom="true"
android:gravity="center_horizontal"
android:text="1"
/>
<TextView
android:id="@+id/left1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_centerVertical="true"
android:gravity="center_vertical"
android:text="2"
/>
<TextView
android:id="@+id/right1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/left1"
android:layout_alignBottom="@+id/left1"
android:layout_alignParentRight="true"
android:gravity="center_vertical"
android:text="3"
/>
<TextView
android:id="@+id/top1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:gravity="center_horizontal"
android:text="4"
/>
</RelativeLayout>
<RelativeLayout
android:id="@+id/tilesAreHERE"
android:layout_width="207dp"
android:layout_height="151dp" >
<TextView
android:id="@+id/bottom1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/top1"
android:layout_alignParentBottom="true"
android:gravity="center_horizontal"
android:text="1"
/>
<TextView
android:id="@+id/left1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_centerVertical="true"
android:gravity="center_vertical"
android:text="2"
/>
<TextView
android:id="@+id/right1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/left1"
android:layout_alignBottom="@+id/left1"
android:layout_alignParentRight="true"
android:gravity="center_vertical"
android:text="3"
/>
<TextView
android:id="@+id/top1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:gravity="center_horizontal"
android:text="4"
/>
</RelativeLayout>
</LinearLayout>
Sehen Sie, wie es ZWEI RelativeLayout-Abschnitte geben würde ... Ich möchte im Grunde genommen eine Kopie von einem erstellen und sie dann wieder hinzufügen (ich weiß nicht wirklich, wie oft ich dies in meinem Programm tun muss, deshalb habe ich füge es nicht wörtlich in das XML ein, ich würde es gerne aus dem Java Code machen). Dies ist, was ich bisher habe, aber wann immer ich es laufen lasse, ist das Layout falsch. Was könnte an meinem Code falsch sein?
LinearLayout m3 = (LinearLayout)findViewById(R.id.tileContainerME);
RelativeLayout m = (RelativeLayout)findViewById(R.id.tilesAreHERE);
RelativeLayout m2 = new RelativeLayout(this);
m2.setLayoutParams(m.getLayoutParams());
m2.setGravity(m.getGravity());
m2.setLayoutDirection(m.getLayoutDirection());
TextView et1 = (TextView) findViewById(R.id.bottom1);
TextView et2 = (TextView) findViewById(R.id.left1);
TextView et3 = (TextView) findViewById(R.id.right1);
TextView et4 = (TextView) findViewById(R.id.top1);
TextView tv1 = new TextView(et1.getContext());
TextView tv2 = new TextView(et2.getContext());
TextView tv3 = new TextView(et3.getContext());
TextView tv4 = new TextView(et4.getContext());
tv1.setLayoutDirection(et1.getLayoutDirection());
tv2.setLayoutDirection(et2.getLayoutDirection());
tv3.setLayoutDirection(et3.getLayoutDirection());
tv4.setLayoutDirection(et4.getLayoutDirection());
tv1.setGravity(et1.getGravity());
tv2.setGravity(et2.getGravity());
tv3.setGravity(et3.getGravity());
tv4.setGravity(et4.getGravity());
tv1.setText(et1.getText());
tv2.setText(et2.getText());
tv3.setText(et3.getText());
tv4.setText(et4.getText());
m2.addView(tv4,et4.getLayoutParams());
m2.addView(tv3,et3.getLayoutParams());
m2.addView(tv2,et2.getLayoutParams());
m2.addView(tv1,et1.getLayoutParams());
m3.addView(m2);
Ich sehe nicht, was mit meinem Code los ist, irgendwelche Vorschläge ...
DAS IST DIE VOLLE XML-DATENDATEI:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >
<HorizontalScrollView
android:id="@+id/scrollHORIZON"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:layout_toRightOf="@+id/linearLayout1" >
<LinearLayout
android:id="@+id/tileContainerME"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<RelativeLayout
android:id="@+id/tilesAreHERE"
android:layout_width="207dp"
android:layout_height="151dp" >
<TextView
android:id="@+id/bottom1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/top1"
android:layout_alignParentBottom="true"
android:gravity="center_horizontal"
android:text="1"
/>
<TextView
android:id="@+id/left1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_centerVertical="true"
android:gravity="center_vertical"
android:text="2"
/>
<TextView
android:id="@+id/right1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/left1"
android:layout_alignBottom="@+id/left1"
android:layout_alignParentRight="true"
android:gravity="center_vertical"
android:text="3"
/>
<TextView
android:id="@+id/top1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:gravity="center_horizontal"
android:text="4"
/>
</RelativeLayout>
</LinearLayout>
</HorizontalScrollView>
</RelativeLayout>