Мне интересны теги <merge>
и <include>
в XML-макетах Android. Я прочитал два учебника, но пока не нашел простой пример использования.
Был бы рад, если бы кто-нибудь мог предоставить такой пример или указать указатель на один.
Мне интересны теги <merge>
и <include>
в XML-макетах Android. Я прочитал два учебника, но пока не нашел простой пример использования.
Был бы рад, если бы кто-нибудь мог предоставить такой пример или указать указатель на один.
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>
Там простой формат Android XML < include/ > HOWTO, который также объясняет общую ошибку над http://www.coboltforge.com/2012/05/tech-stuff-layout/. Это может помочь...
Возьмем пример:
У меня есть два тега <EditText>
и <ListView >
, которые соответствуют нескольким пользовательским интерфейсам.
Поэтому я создал XML файл, как указано ниже, для включения во все такие пользовательские интерфейсы.
<?xml ...>
<EditText ... />
<ListView ... />
Вышеприведенный XML недействителен XML, поскольку он не имеет корневого элемента.
Поэтому корневой элемент нужен только для XML. <merge>
- это решение, приведенное ниже:
<?xml ...>
<merge xmlns:android="http://schemas.android.com/apk/res/android">
<EditText ... />
<ListView ... />
</merge>
id не вставляет код, иначе работа с относительными параметрами макета. Он выполняет некоторую другую обработку
<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>
Мы можем видеть иерархию уровней