有没有办法在另一个布局中调用已定义的布局?

时间:2017-04-23 22:50:19

标签: android android-layout

<?xml version="1.0" encoding="utf-8"?>
<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"
    tools:context="org.innoversetech.hobuddies.MainActivity"
    android:background="#FF7506"
    android:id="@+id/linMatcher">
    <ScrollView
        android:id="@+id/scroll"
        android:layout_height="wrap_content"
        android:layout_width="match_parent">
        <LinearLayout
            android:orientation="vertical"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/lin1">

<!-- Psychometric Questions-->
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="37dp"
        android:id="@+id/Surgency1"
        android:textSize="20sp"
        android:text="I am the life of the party"/>
        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@id/Surgency1"
            android:orientation="vertical">
            <!--Radio Buttons-->
            <RadioButton
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="Strongly Disagree"
                android:id="@+id/SD"/>
            <RadioButton
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="Disagree"
                android:id="@+id/D"/>
            <RadioButton
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="Not really"
                android:id="@+id/NR"/>
            <RadioButton
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="Agree"
                android:id="@+id/A"/>
            <RadioButton
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="Strongly Agree"
                android:id="@+id/SA"/>
        </LinearLayout>
    </LinearLayout>
  </ScrollView>
</RelativeLayout>

我想要的是用类似的单选按钮创建15个问题。有没有办法让我创建一个单选按钮布局,然后调用它?我不必一次又一次地复制粘贴单选按钮。另外,我如何定义每个ID?

2 个答案:

答案 0 :(得分:0)

您可以使用<include>代码轻松完成此操作,并将布局添加到属性layout

试试这个:

<include
    layout="@layout/your_layout">

</include>

例如:

这是您的radio_layout.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/Surgency1"
        android:orientation="vertical">

        <!--Radio Buttons-->
        <RadioButton
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="Strongly Disagree"
            android:id="@+id/SD"/>
        <RadioButton
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="Disagree"
            android:id="@+id/D"/>
        <RadioButton
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="Not really"
            android:id="@+id/NR"/>
        <RadioButton
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="Agree"
            android:id="@+id/A"/>
        <RadioButton
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="Strongly Agree"
            android:id="@+id/SA"/>
    </LinearLayout>

这是您的acivity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<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"
    tools:context="org.innoversetech.hobuddies.MainActivity"
    android:background="#FF7506"
    android:id="@+id/linMatcher">
    <ScrollView
        android:id="@+id/scroll"
        android:layout_height="wrap_content"
        android:layout_width="match_parent">

        <LinearLayout
            android:orientation="vertical"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/lin1">

        <!-- Psychometric Questions-->
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="37dp"
            android:id="@+id/Surgency1"
            android:textSize="20sp"
            android:text="I am the life of the party"/>

        <include
            layout="@layout/radio_layout">
        </include>

    </LinearLayout>
  </ScrollView>
</RelativeLayout>

希望这会有所帮助〜

答案 1 :(得分:0)

您可以使用 <include /> 标记

重新使用布局

如果在目标布局中应多次使用include布局:

  1. 使用 <merge /> 标记以root身份创建布局 radio_btns.xml

    <merge xmlns:android="http://schemas.android.com/apk/res/android"> <RadioButton android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Strongly Disagree"/> <RadioButton android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Disagree"/> <RadioButton android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Not really"/> <RadioButton android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Agree"/> <RadioButton android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Strongly Agree"/> </merge>

  2. 在主要版面中添加 ViewLayout 项目,例如 LinearLayout RelativeLayout 或任何 ViewGroup

    .... <LinearLayout android:id="@+id/first" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" /> <LinearLayout android:id="@+id/second" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" /> .....

  3. 活动

    setContentView 之后

    LayoutInflater inflater = LayoutInflater.from(this); ViewGroup first = (ViewGroup) findViewById(R.id.first); ViewGroup second = (ViewGroup) findViewById(R.id.second); inflater.inflate(R.layout.radio_btns.xml, first, true); inflater.inflate(R.layout.radio_btns.xml, second, true); //Get any item to from viewGroup as child RadioButton firstInFirstGroup = (RadioButton) first.getChildAt(0); RadioButton secondInSecondGroup = (RadioButton) second.getChildAt(1);

  4. 如果要多次将其包含在xml布局中,请不要在xml布局中使用 id 。请注意, ViewGroup 中的第一项索引为0