如何动态地在相对布局中添加相对布局

时间:2016-02-08 08:35:22

标签: android android-layout

我的项目文件有XML,例如root xml。在根xml中,我定义了Relative layout,如下所示

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/root_view">
    </RelativeLayout>

我的另一个xml文件首先是one.xml,另一个是two.xml,如下所示

one.xml

     <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:visibility="gone"
        android:id="@+id/two_video_layout">

             <TextView
                    android:id="@+id/two_video_title"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_marginLeft="10dp"
                    android:singleLine="true"
                    android:text="Video Title" />


</RelativeLayout>

另一个布局是

two.xml

<?xml version="1.0" encoding="utf-8"?>
        <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:visibility="gone"
            android:id="@+id/two_video_layout">

                 <Imageview
                        android:id="@+id/image"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                         />


    </RelativeLayout>

如何在具有特定条件的one.xml中动态添加two.xmlroot.xml以及如何访问one.xml文件的文本视图的引用

3 个答案:

答案 0 :(得分:1)

您必须使用LayoutParams添加视图。

LinearLayout linearLayout = new LinearLayout(this);

RelativeLayout.LayoutParams relativeParams = new RelativeLayout.LayoutParams(
        LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT);
relativeParams.addRule(RelativeLayout.ALIGN_PARENT_TOP);

    parentView.addView(linearLayout, relativeParams);

要以编程方式相对定位您的商品,您必须为其分配ID。

TextView tv1 = new TextView(this);
tv1.setId(1);

答案 1 :(得分:0)

尝试这样的事情, 其中rootLayout用于root.xml

RelativeLayout two_video_layout=new RelativeLayout(this);
rootLayout.addView(two_video_layout);

答案 2 :(得分:0)

您可以像这样使用LayoutInflater

LayoutInflater inflater=(LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE);
View v = inflater.inflate(R.layout.viewYou_want_to_inflate, null);
// to inflate one.xml call 
View v = inflater.inflate(R.layout.one, null);
TextView textView=(TextView)v.findViewById(R.id.two_video_title); // to get textview object from one.xml
// to inflate two.xml call 
View v = inflater.inflate(R.layout.two, null);

并在根视图中添加一个视图,调用addView函数如下:

RelativeLayout root_layout=(RelativeLayout)findViewById(R.id.root_view);
layout.addView(v);