Je suis curieux de savoir le <merge>
et <include>
tags dans Android XML-layouts. J'ai lu deux tutoriels, mais je n'ai pas encore trouvé d'exemple simple d'utilisation.
Serait heureux si quelqu'un pouvait fournir un tel exemple ou en donner un pointeur.
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>
Il y a un simple Android mise en page XML <include /> HOWTO qui explique également un piège commun sur http://www.coboltforge.com/2012/05/tech-stuff- layout / . Cela peut aider ...
Prenons un exemple:
J'ai deux balises <EditText>
et <ListView >
à venir plus d'une interface utilisateur. J'ai donc créé un fichier XML comme indiqué ci-dessous pour l'inclure dans toutes ces interfaces utilisateur.
<?xml ...>
<EditText ... />
<ListView ... />
Le XML ci-dessus n'est pas un XML valide car il n'avait pas d'élément racine. Un élément racine est donc nécessaire juste pour le bien de XML. <merge>
est la solution indiquée ci-dessous:
<?xml ...>
<merge xmlns:Android="http://schemas.Android.com/apk/res/Android">
<EditText ... />
<ListView ... />
</merge>
<merge>
tag est utilisé pour atténuer le nombre de niveaux afin d'augmenter les performances des dispositions de rendu. la balise est utilisée avec <include>
tag parfaitement ensemble.
Prenons un exemple, nous avons une disposition de connexion et utilisé pour plus d'un dans le cadre de notre application. En utilisant la balise pour afficher login_layout, nous pouvons utiliser et échapper à un niveau.
Je vous conseille également de lire les astuces sur les mises en page. 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 (toute disposition que nous voulons inclure 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>
Nous pouvons voir la hiérarchie des niveaux
id ne colle pas de code, sinon les paramètres de disposition relatifs auraient fonctionné. Il fait un traitement différent