在我的案例中如何将一个布局嵌入到另一个布局中?

时间:2011-07-08 07:38:06

标签: android android-layout android-emulator android-widget android-manifest

如果我的布局名为 bottom.xml

bottom.xml: (只包含textview和编辑文本视图)

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:orientation="vertical"
     >
        <TextView 
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal"
            android:gravity="center_horizontal" 
            android:text="@string/username"

        />

        <EditText 
            android:id="@+id/name"

            android:layout_width="120dip"
            android:layout_height="50dip"
            android:layout_gravity="center_horizontal"     
        />
 </LinearLayout>

有没有办法在其他布局中嵌入上面的 bottom.xml 布局,而不是在多个布局文件中重复编写相同的代码(当其他布局的部分包含与bottom.xml相同的布局时)?

例如,如果我的 admin.xml 布局也包含与 bottom.xml ,如何在 admin.xml 中嵌入 bottom.xml ,而不是编写再次使用相同的代码?

admin.xml的:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
     >
     ...
     ...
        <!--How to embed bottom.xml here-->
     ...
 </LinearLayout>

如果在Android中无法做到这一点,可能是什么方法?

---------- -----------更新

与@xevincent建议一样,我可以使用<include>标记重用 bottom.xml

但是如何更改已恢复布局中元素的ID?

例如,insdie bottom.xml ,当我重用<editText android:id="@+id/name">的ID更改为<editText android:id="@+id/other_name"> > bottom.xml 布局在其他布局中,如何更改id?

3 个答案:

答案 0 :(得分:7)

请参阅此文档reusing layouts

答案 1 :(得分:2)

只是upvote xevincent的anwser。我添加了这个答案,因为SO建议“始终引用重要链接中最相关的部分,以防目标站点无法访问或永久脱机。”

所以,基本上,his link解释说你应该使用<com.android.launcher.Workspace android:id="@+id/workspace" android:layout_width="fill_parent" android:layout_height="fill_parent" launcher:defaultScreen="1"> <include android:id="@+id/cell1" layout="@layout/workspace_screen" /> <include android:id="@+id/cell2" layout="@layout/workspace_screen" /> <include android:id="@+id/cell3" layout="@layout/workspace_screen" /> </com.android.launcher.Workspace>

<include android:layout_width="fill_parent" layout="@layout/image_holder" />

并且知道您可以覆盖布局参数:

{{1}}

答案 2 :(得分:0)