Простой пример и использование в Android XML-макетов
мне любопытно <merge>
и <include>
теги в XML-макетах Android. Я прочитал два учебника, но еще не нашел простой пример использования.
был бы счастлив, если бы кто-то мог предоставить такой пример или дать указатель на него.
5 ответов:
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
HOWTO, который также объясняет общую ловушку в http://www.coboltforge.com/2012/05/tech-stuff-layout/. это может помочь...
берите пример:
у меня есть два тега
<EditText>
и<ListView >
приходит более одного UIs. Поэтому я создал XML-файл, как показано ниже, чтобы включить его во все такие UI.<?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>
мы видим иерархию уровней