java-如何动态添加XML副本

java-如何动态添加XML副本,第1张

概述我正在制作一个Android应用程序,我想在线性布局中复制一些XML代码,然后将其重新插入到线性布局中,以便在线性布局中有两个相对布局.我想通过下面的代码动态地做到这一点:<LinearLayoutandroid:id="@+idileContainerME"android:layout_width="match_parent"

我正在制作一个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副本所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1095217.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-28
下一篇 2022-05-28

发表评论

登录后才能评论

评论列表(0条)

保存