web-dev-qa-db-fra.com

Exemple simple d'utilisation de <merge> et <include> dans Android XML-layouts

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.

73
aioobe

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>
96
yanchenko

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 ...

5
bk138

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>
4
Habeeb Perwad

<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 enter image description here

2
huseyin

id ne colle pas de code, sinon les paramètres de disposition relatifs auraient fonctionné. Il fait un traitement différent

2
dev