Android - 使用两个xml文件显示单个Activity

时间:2012-12-07 11:02:18

标签: java android android-layout android-xml

我开发了Android app,其中一些屏幕具有通用的UI格式。

自上而下方法的格式为:

  1. 标题标题(两个buttonsImageView
  2. 内容区域 - 活动之间会有所不同(包含ListView,Tabs,Buttons,TextView,WebView ....)
  3. 页脚布局(Relative Layout有三个Imagebuttons
  4. 我想重新格式化代码,使得xml包含标题页眉和页脚布局,而其他xml包含ListView,标签,按钮......基于用法。我能实现这个吗?请帮我提供示例代码/链接....

5 个答案:

答案 0 :(得分:3)

您可以使用include元素来获取子xml文件:

<LinearLayout ... >
    <include layout="@layout/header" />
    <include layout="@layout/content" />
    <include layout="@layout/footer" />
</LinearLayout>

这将允许您轻松创建重用这些部分的布局。

答案 1 :(得分:0)

使用标签。

      <include 
        android:id="@+id/some_id_if_needed"
        layout="@layout/some_layout"/>

另请阅读Merging Layouts articles

答案 2 :(得分:0)

您需要的是include标记。您可以重复使用布局。您需要做的就是包括它们:

<include
android:id="@+id/layout_id"
layout="@layout/layout_name" />

答案 3 :(得分:0)

您可以使用include标记在actvity视图中添加更多xml,只需查看此http://developer.android.com/training/improving-layouts/reusing-layouts.html

例如,在您的情况下,

  1. 在main.xml中,使用相对布局
  2. 为标题添加单独的xml,使用main.xml中的标记添加
  3. 在main.xml中添加相对布局,使用height作为换行内容并添加listview
  4. 为页脚添加单独的相对布局xml,在main.xml中使用标签添加添加并使用android:layout_alignParentBottom =“true”

答案 4 :(得分:0)

我建议你利用java中的继承。拥有BaseActivity,您可以在其中定义活动中的所有常见内容,并在所有子活动中扩展此内容并设置内容。在BaseActivity的布局中,内容的布局为空,稍后在子活动中,您可以使用LayoutInflater填充内容。

伪代码:

BaseActivity extends Activity{
    View mBody;
    void onCreate(Bundle prevState){
        super.onCreate(prevState);
        setContentView(R.layout.baselayout);
        mBody = findViewById(R.id.body)
    }

    void setBody(int bodyLaout){
        //here populate the mView using LayoutInflater
    }
}

Activity1 extends BaseActivity{
    void onCreate(...){
        super.onCreate(...);
        setBody(R.layout.activity_one);
    }
}