Ressource de mise en page

Stay organized with collections Save and categorize content based on your preferences.

Une ressource de mise en page définit l'architecture de l'UI dans une activité ou un composant d'une UI.

Emplacement du fichier :
res/layout/filename.xml
Le nom de fichier sera utilisé comme ID de ressource.
Type de données de la ressource compilée :
Pointeur vers une ressource (ou sous-classe) View.
Référence de la ressource :
En Java : R.layout.filename
En XML : @[package:]layout/filename
Syntaxe :
<?xml version="1.0" encoding="utf-8"?>
<ViewGroup
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@[+][package:]id/resource_name"
    android:layout_height=["dimension" | "match_parent" | "wrap_content"]
    android:layout_width=["dimension" | "match_parent" | "wrap_content"]
    [ViewGroup-specific attributes] >
    <View
        android:id="@[+][package:]id/resource_name"
        android:layout_height=["dimension" | "match_parent" | "wrap_content"]
        android:layout_width=["dimension" | "match_parent" | "wrap_content"]
        [View-specific attributes] >
        <requestFocus/>
    </View>
    <ViewGroup >
        <View />
    </ViewGroup>
    <include layout="@layout/layout_resource"/>
</ViewGroup>

Remarque : L'élément racine peut être un élément ViewGroup, View ou <merge>, mais il ne doit y avoir qu'un seul élément racine, qui doit contenir l'attribut xmlns:android avec l'espace de noms android, comme indiqué.

Éléments :
<ViewGroup>
Conteneur pour d'autres éléments View. Il existe de nombreux types d'objets ViewGroup différents, et chacun vous permet de spécifier la mise en page des éléments enfants de différentes manières. Les différents types d'objets ViewGroup incluent LinearLayout, RelativeLayout et FrameLayout.

Toutes les dérivations de ViewGroup n'accepteront pas obligatoirement les View imbriqués. Certains ViewGroup sont des implémentations de la classe AdapterView, qui détermine ses enfants uniquement à partir d'un Adapter.

Attributs :

android:id
ID de ressource. Nom de ressource unique de l'élément, que vous pouvez utiliser pour obtenir une référence à la propriété ViewGroup à partir de votre application. Vous trouverez plus d'informations sur la valeur pour android:id ci-dessous.
android:layout_height
Dimension ou mot clé. Obligatoire. Hauteur du groupe, en tant que valeur de dimension (ou ressource de dimension) ou mot clé ("match_parent" ou "wrap_content"). Consultez les valeurs valides ci-dessous.
android:layout_width
Dimension ou mot clé. Obligatoire. Largeur du groupe, en tant que valeur de dimension (ou ressource de dimension) ou mot clé ("match_parent" ou "wrap_content"). Consultez les valeurs valides ci-dessous.

D'autres attributs sont compatibles avec la classe de base ViewGroup, et de nombreux autres sont compatibles avec chaque implémentation de ViewGroup. Pour connaître tous les attributs disponibles, consultez la documentation de référence correspondante pour la classe ViewGroup (par exemple, les attributs XML LinearLayout).

<View>
Composant d'UI individuel, généralement appelé "widget". Les différents types d'objets View incluent TextView, Button et CheckBox.

Attributs :

android:id
ID de ressource. Nom de ressource unique de l'élément, que vous pouvez utiliser pour obtenir une référence à la propriété View à partir de votre application. Vous trouverez plus d'informations sur la valeur pour android:id ci-dessous.
android:layout_height
Dimension ou mot clé. Obligatoire. Hauteur de l'élément, en tant que valeur de dimension (ou ressource de dimension) ou mot clé ("match_parent" ou "wrap_content"). Consultez les valeurs valides ci-dessous.
android:layout_width
Dimension ou mot clé. Obligatoire. Largeur de l'élément, en tant que valeur de dimension (ou ressource de dimension) ou mot clé ("match_parent" ou "wrap_content"). Consultez les valeurs valides ci-dessous.

D'autres attributs sont compatibles avec la classe de base View, et de nombreux autres sont compatibles avec chaque implémentation de View. Pour en savoir plus, consultez la section Mises en page. Pour connaître tous les attributs disponibles, consultez la documentation de référence correspondante (par exemple, les attributs XML TextView).

<requestFocus>
Tout élément représentant un objet View peut inclure cet élément vide, ce qui permet à son parent de se concentrer initialement sur l'écran. Vous ne pouvez avoir qu'un seul de ces éléments par fichier.
<include>
Inclut un fichier de mise en page dans cette mise en page.

Attributs :

layout
Ressource de mise en page. Obligatoire. Référence à une ressource de mise en page.
android:id
ID de ressource. Remplace l'ID attribué à la vue racine dans la mise en page incluse.
android:layout_height
Dimension ou mot clé. Remplace la hauteur attribuée à la vue racine dans la mise en page incluse. Ceci est uniquement efficace si android:layout_width est également déclaré.
android:layout_width
Dimension ou mot clé. Remplace la largeur attribuée à la vue racine dans la mise en page incluse. Ceci est uniquement efficace si android:layout_height est également déclaré.

Vous pouvez inclure dans la propriété <include> tout autre attribut de mise en page compatible avec l'élément racine. Il remplacera alors ceux définis dans l'élément racine.

Attention : Si vous souhaitez remplacer les attributs de mise en page à l'aide de la balise <include>, vous devez remplacer android:layout_height et android:layout_width afin qu'ils prennent effet.

Vous pouvez également inclure une mise en page en utilisant ViewStub. Il s'agit d'un affichage léger qui ne consomme aucun espace de mise en page jusqu'à ce que vous le gonfliez explicitement. Il inclut alors un fichier de mise en page défini par son attribut android:layout. Pour en savoir plus sur l'utilisation de ViewStub, consultez la page Charger des affichages à la demande.

<merge>
Autre élément racine qui ne figure pas dans la hiérarchie de la mise en page. L'utiliser comme élément racine est utile si vous savez que cette mise en page sera placée dans une mise en page contenant déjà l'affichage parent approprié pour contenir les enfants de l'élément <merge>. Ceci est particulièrement utile lorsque vous prévoyez d'inclure cette mise en page dans un autre fichier de mise en page à l'aide de <include> et que cette mise en page ne nécessite pas un autre conteneur ViewGroup. Pour en savoir plus, consultez la section Réutiliser des mises en page avec <include/>.

Valeur de android:id

Pour la valeur de l'ID, vous devez généralement utiliser la syntaxe suivante : "@+id/name". Le symbole Plus (+) indique qu'il s'agit d'un nouvel ID de ressource. Si ce n'est pas déjà fait, l'outil aapt crée un nouvel entier pour la ressource dans la classe R.java. Exemple :

<TextView android:id="@+id/nameTextbox"/>

Le nom nameTextbox est désormais un ID de ressource associé à cet élément. Vous pouvez ensuite faire référence au TextView auquel l'ID est associé en Java :

Kotlin

val textView: TextView? = findViewById(R.id.nameTextbox)

Java

TextView textView = findViewById(R.id.nameTextbox);

Ce code renvoie l'objet TextView.

Toutefois, si vous avez déjà défini un ID de ressource (et qu'il n'est pas déjà utilisé), vous pouvez appliquer cet ID à un élément View en excluant le symbole plus dans la valeur android:id.

Valeur de android:layout_height et android:layout_width :

Les valeurs de hauteur et de largeur peuvent être exprimées à l'aide de l'une des unités de dimension acceptées par Android (px, dp, sp, pt, in, mm) ou avec les mots clés suivants :

ValeurDescription
match_parent Définit la dimension de sorte qu'elle corresponde à celle de l'élément parent. Ajouté au niveau d'API 8 pour rendre fill_parent obsolète.
wrap_content Définit la dimension uniquement sur la taille requise pour s'adapter au contenu de cet élément.

Éléments de l'affichage personnalisé

Vous pouvez créer vos propres éléments View et ViewGroup personnalisés, et les appliquer à votre mise en page de la même manière qu'un élément de mise en page standard. Vous pouvez également spécifier les attributs acceptés dans l'élément XML. Pour en savoir plus, consultez le guide du développeur sur les composants personnalisés.

Exemple :
Fichier XML enregistré sous res/layout/main_activity.xml :
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:layout_width="match_parent"
              android:layout_height="match_parent"
              android:orientation="vertical" >
    <TextView android:id="@+id/text"
              android:layout_width="wrap_content"
              android:layout_height="wrap_content"
              android:text="Hello, I am a TextView" />
    <Button android:id="@+id/button"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Hello, I am a Button" />
</LinearLayout>

Ce code d'application charge la mise en page pour une Activity, dans la méthode onCreate() :

Kotlin

public override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.main_activity)
}

Java

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main_activity);
}
Voir aussi :