如何动态添加布局文件

时间:2012-10-24 09:52:47

标签: android android-layout

我有这个布局文件,其中包含用户位置的详细信息 用户应该有1到3个位置,具体取决于我需要添加1到3个位置表单的条件

enter image description here

有人能告诉我如何动态地将这个xml布局文件添加到其他布局文件中吗?

<?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout 
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_height="wrap_content"
        android:layout_width="fill_parent"
        android:background="@drawable/container"
        android:padding="2dp"
        android:layout_below="@+id/upperBox"
        android:layout_margin="5dp"
        >
        <RelativeLayout 
        android:layout_height="wrap_content"
        android:layout_width="fill_parent"
        android:background="@drawable/container_inner"
        android:padding="1dp"
        >

            <TableLayout
                android:layout_width="match_parent"
                android:layout_height="fill_parent"
                android:background="@color/white"
                android:orientation="vertical"
                android:scrollbars="vertical" >

                <TextView
                    style="@style/footerText"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="@string/tracking_settings" />

                <TableRow
                    android:id="@+id/tableRow1"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content" >

                    <TextView
                        android:id="@+id/locationName"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="@string/location_name" />

                    <EditText
                        android:id="@+id/editTextLocationName"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:inputType="text" >

                        <requestFocus />
                    </EditText>
                </TableRow>

                <TableRow
                    android:id="@+id/tableRow2"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content" >

                    <TextView
                        android:id="@+id/address"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="@string/address" />

                    <EditText
                        android:id="@+id/editextAddress"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:inputType="text" />
                </TableRow>

                <TableRow
                    android:id="@+id/tableRow3"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content" >

                    <TextView
                        android:id="@+id/alertPref"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="@string/alert_preference" />

                    <Spinner
                        android:id="@+id/spinnerAlertPref"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:entries="@array/alert_pref_arrays"
                        android:prompt="@string/alert_pref_prompt" />
                </TableRow>

                <TableRow
                    android:id="@+id/tableRow4"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content" >

                    <TextView
                        android:id="@+id/frequency"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="@string/frequency" />

                    <Spinner
                        android:id="@+id/spinnerFreq"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:entries="@array/freq_arrays"
                        android:prompt="@string/freq_prompt" />
                </TableRow>

                <TableRow
                    android:id="@+id/tableRow5"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content" >

                    <TextView
                        android:id="@+id/TrackBetween"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="@string/track_between" />

                    <Spinner
                        android:id="@+id/spinnerTimeFrom"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:entries="@array/time_arrays"
                        android:prompt="@string/time_prompt" />
                </TableRow>

                <TableRow
                    android:id="@+id/tableRow6"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content" >

                    <TextView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content" />

                    <Spinner
                        android:id="@+id/spinnerTimeFrom1"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:entries="@array/am_pm_arrays"
                        android:prompt="@string/am_pm_prompt" />
                </TableRow>

                <TableRow
                    android:id="@+id/tableRow7"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content" >

                    <TextView
                        android:id="@+id/to"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="@string/to" />

                    <Spinner
                        android:id="@+id/spinnerTimeTo"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:entries="@array/time_arrays"
                        android:prompt="@string/time_prompt" />
                </TableRow>

                <TableRow
                    android:id="@+id/tableRow8"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content" >

                    <TextView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content" />

                    <Spinner
                        android:id="@+id/spinnerTimeTo1"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:entries="@array/am_pm_arrays"
                        android:prompt="@string/am_pm_prompt" />
                </TableRow>

                <TextView
                    style="@style/footerText"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="@string/alert_settings" />

                <TableRow
                    android:id="@+id/tableRow9"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content" >

                    <TextView
                        android:id="@+id/sexOffenderIsWithin"
                        android:layout_width="100dp"
                        android:layout_height="wrap_content"
                        android:text="@string/sex_offender_is_within" />

                    <Spinner
                        android:id="@+id/spinnerSexOff"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:entries="@array/sex_offender_arrays"
                        android:prompt="@string/sex_offender_prompt" />
                </TableRow>

                <TableRow
                    android:id="@+id/tableRow10"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content" >

                    <TextView
                        android:id="@+id/travelAwayFromLocation"
                        android:layout_width="100dp"
                        android:layout_height="wrap_content"
                        android:text="@string/travel_away_from_location" />

                    <Spinner
                        android:id="@+id/spinnerTravelAway"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:entries="@array/sex_offender_arrays"
                        android:prompt="@string/sex_offender_prompt" />
                </TableRow>

                <TableRow
                    android:id="@+id/tableRow11"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content" >

                    <TextView
                        android:id="@+id/arriveAtLocation"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="@string/arrive_at_location" />

                    <Spinner
                        android:id="@+id/spinnerArriveAt"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:entries="@array/yes_donttrack_arrays"
                        android:prompt="@string/yes_donttrack_prompt" />
                </TableRow>

                <TableRow
                    android:id="@+id/tableRow12"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content" >

                    <TextView
                        android:id="@+id/travelByVehicle"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="@string/travel_by_vehicle" />

                    <Spinner
                        android:id="@+id/spinnerTravelBy"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:entries="@array/yes_donttrack_arrays"
                        android:prompt="@string/yes_donttrack_prompt" />
                </TableRow>

                <TableRow
                    android:id="@+id/tableRow13"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content" >

                    <TextView
                        android:id="@+id/phonStatus"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="@string/phon_status" />

                    <Spinner
                        android:id="@+id/spinnerPhonStatus"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:entries="@array/phon_status_arrays"
                        android:prompt="@string/phon_status_prompt" />
                </TableRow>

                <TableRow
                    android:id="@+id/tableRow14"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content" >

                    <TextView
                        style="@style/footerText"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="@string/cancel" />

                    <TextView
                        style="@style/footerText"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:gravity="right"
                        android:text="@string/submit" />
                </TableRow>
            </TableLayout>

            </RelativeLayout>
            </RelativeLayout>

3 个答案:

答案 0 :(得分:2)

此布局文件通过LayoutInflater在另一个布局中。

假设您想在主布局中添加此布局。因此,通过mainlayout.add(view)在主布局中采用线性布局和主列布局中的列表布局,此处view为LayoutInflater viw。

示例:

private View view;
    view = getLayoutInflater().inflate(R.layout.image_sub_layout,
                null);
     topicLinearLayout.addView(view); // main Layout Linear layout

感谢。

答案 1 :(得分:2)

我们假设你的第一个活动是main.xml,其中是一个空的linearLayout。

通过LayoutInflater,您可以获得类似

的布局
linearLayout = (LinearLayout) getLayoutInflater().inflate(R.layout.main, null);
layoutToAdd = (LinearLayout) getLayoutInflater().inflate(R.layout.layout_to_add, null);

然后,您只需将所需的xml-layout-file添加到该linearLayout(其他类型的布局,单View个或ViewGroup s)。

   linearLayout.add(layoutToAdd);

或者正如阿卜杜勒所建议的那样,你将所需的布局“投射”到视图中。

答案 2 :(得分:0)

根据我的理解,您希望布局包含1-3个位置表单,具体取决于您要实现的条件。如果您确定要处理从UI输入的位置数,那么只需使用VisibilityGONE的不同ID添加相同的布局三次。在从UI处理它时,您可以根据UI线程中的条件将布局的可见性更改为view.VISIBLE

您可以插入scrollView的代码,使主要布局可以为最终用户滚动。