我正在制作一个Android应用程序,我想在线性布局中复制一些XML代码,然后将其重新插入到线性布局中,以便在线性布局中有两个相对布局.我想通过下面的代码动态地做到这一点:
<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>
然后只需将其转换为:
<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>
看看会有两个relativeLayout部分…我想基本上复制一个,然后再添加回去(我真的不知道我在程序中可能需要做多少次,这就是为什么并不是从字面上将其插入XML中,我想从Java代码中完成).
到目前为止,这就是我所拥有的,但是每当我运行它时,布局都是错误的.我的代码可能出什么问题了?
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);
我看不到我的代码有什么问题,没有任何建议…..
这是完整的XML数据文件:
<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>
解决方法:
再次在其中夸大相同的布局可能会帮助您实现这一目标.
试试这个代码:
@OverrIDepublic voID onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentVIEw(R.layout.main_layout); linearLayout main_layout = (linearLayout)findVIEwByID(R.ID.tileContainerME); LayoutInflater inflater = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE); linearLayout child = (linearLayout) inflater.inflate(R.layout.main_layout, null); main_layout.addVIEw(child, 1);}
您将获得如下内容:
总结以上是内存溢出为你收集整理的java-如何动态添加XML副本全部内容,希望文章能够帮你解决java-如何动态添加XML副本所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)