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