我很好奇Android XML版式中的<merge>
和<include>
标签。我已经阅读了两个教程,但是还没有找到一个简单的示例用法。
如果有人可以提供这样的例子或给出一个例子,那将是很高兴的。
我很好奇Android XML版式中的<merge>
和<include>
标签。我已经阅读了两个教程,但是还没有找到一个简单的示例用法。
如果有人可以提供这样的例子或给出一个例子,那将是很高兴的。
Answers:
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>
<include>
基本上是指“获取该文件并将其内容粘贴到此处”。
举个例子:
我有两个标签,<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>
http://www.coboltforge.com/2012/05/tech-stuff-layout/上有一个简单的Android XML布局<include /> HOWTO,它也解释了一个常见的陷阱。这可能会帮助...
<merge>
标签用于减少级别数以提高渲染布局的性能。标签与<include>
标签完美搭配使用。
举个例子,我们有一个登录布局,并在我们的应用程序范围内使用了多个。当使用标记显示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>
我们可以看到级别层次结构