Android XML-layouts中<merge>和<include>用法的简单示例</include> </merge>

时间:2010-04-28 19:52:08

标签: xml android layout merge include

我对Android XML布局中的<merge><include>标记感到好奇。我已经阅读了两个教程,但还没有找到一个简单的示例用法。

如果有人可以提供这样的例子或给出一个指针,那将会很高兴。

5 个答案:

答案 0 :(得分:96)

<强> some_activity.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent" android:layout_height="fill_parent"
    android:orientation="vertical">

    // some views

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

   // probably more views

</LinearLayout>

<强> view_part.xml

<merge xmlns:android="http://schemas.android.com/apk/res/android">

    // the views to be merged

</merge>

答案 1 :(得分:5)

有一个简单的Android XML布局&lt; include /&gt; HOWTO也解释了http://www.coboltforge.com/2012/05/tech-stuff-layout/的常见陷阱。这可能会有所帮助......

答案 2 :(得分:4)

举个例子:

我有两个标记<EditText><ListView >来自多个UI。 所以我创建了一个XML文件,如下所示,包含在所有这样的UI中。

<?xml ...>
<EditText ... />
<ListView ... />   

上面的XML不是有效的XML,因为它没有根元素。 因此,仅为了XML而需要根元素。 <merge>是下面给出的解决方案:

<?xml ...>
<merge xmlns:android="http://schemas.android.com/apk/res/android">
    <EditText ... />
    <ListView ... />
</merge>

答案 3 :(得分:2)

id不会粘贴代码,否则相对布局参数会起作用。它做了一些不同的处理

答案 4 :(得分:2)

<merge>标记用于减少级别数以提高渲染布局的性能。标记与<include>标记完美地结合使用。

举一个例子,我们有一个登录布局,并用于我们的应用程序范围内的多个。使用tag来显示login_layout时,我们可以使用并可以转义级别。

我还建议你阅读有关布局的技巧。 http://android-developers.blogspot.com.tr/2009/03/android-layout-tricks-3-optimize-by.html

login_form.xml

<?xml version="1.0" encoding="utf-8"?>
<!-- Login form -->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical" >
    <EditText
        android:id="@+id/email"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="Email..."
        android:inputType="textEmailAddress"
        android:maxLines="1"
        android:singleLine="true"
        android:visibility="visible" />

    <EditText
        android:id="@+id/password"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="Password.."
        android:imeActionId="@+id/login"
        android:imeOptions="actionUnspecified"
        android:inputType="textPassword"
        android:maxLines="1"
        android:singleLine="true"
        android:text="1337"
        android:visibility="visible" />

    <Button
        android:id="@+id/sign_in_button"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:layout_marginTop="16sp"
        android:paddingLeft="32sp"
        android:paddingRight="32sp"
        android:text="Login"
        android:visibility="visible" />

</LinearLayout>

example_layout.xml (我们想要包含login_form.xml的任何布局)

<merge xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools" >

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

</merge>

我们可以看到级别层次结构enter image description here