Disposition relative

Essayer Compose
Jetpack Compose est le kit d'outils d'interface utilisateur recommandé pour Android. Découvrez comment utiliser les mises en page dans Compose.
<ph type="x-smartling-placeholder"></ph> ConstraintLayout dans Compose →

RelativeLayout est un groupe de vues qui affiche les vues enfants de manière relative en fonction de leur position géographique. La position de chaque vue peut être spécifiée par rapport aux éléments frères (par exemple, à gauche ou en dessous d'une autre vue) ou dans des positions par rapport à la zone RelativeLayout parente (par exemple, alignée en bas, à gauche ou au centre).

Remarque : Pour de meilleures performances et une meilleure compatibilité avec les outils, vous devez créer votre mise en page avec ConstraintLayout.

RelativeLayout est un utilitaire très puissant pour concevoir une interface utilisateur. car cela permet d'éliminer les groupes de vues imbriqués et de rendre votre hiérarchie de mise en page plate, ce qui améliore des performances. Si vous utilisez plusieurs groupes LinearLayout imbriqués, vous pourrez peut-être les remplacer par un seul RelativeLayout.

Positionnement des vues

RelativeLayout permet aux vues enfants de spécifier leur position par rapport à la vue parent ou l'une avec l'autre (spécifiée par un ID). Vous pouvez aligner deux éléments par bordure droite créer une image en dessous d'une autre, être centrée à l'écran, centrée sur la gauche, etc. Par défaut, tous les comptes Les vues étant dessinées en haut à gauche de la mise en page, vous devez définir la position de chaque vue à l'aide des différentes propriétés de mise en page disponibles dans RelativeLayout.LayoutParams.

Certaines des nombreuses propriétés de mise en page disponibles pour les vues dans un RelativeLayout incluent:

android:layout_alignParentTop
Si la valeur est "true", le bord supérieur de cette vue correspond au bord supérieur du parent.
android:layout_centerVertical
Si la valeur est "true", l'enfant est centré verticalement dans son parent.
android:layout_below
Positionne le bord supérieur de cette vue en dessous de la vue spécifiée avec un ID de ressource.
android:layout_toRightOf
Positionne le bord gauche de cette vue à droite de la vue spécifiée avec un ID de ressource.

Ce ne sont là que quelques exemples. Tous les attributs de mise en page sont documentés sur RelativeLayout.LayoutParams.

La valeur de chaque propriété de mise en page est soit une valeur booléenne, activer une position de mise en page par rapport au RelativeLayout parent ou à un ID qui fait référence à une autre vue de la mise en page par rapport à laquelle la vue doit être positionnée.

Dans votre mise en page XML, les dépendances par rapport à d'autres vues de la mise en page peuvent être déclarées dans n'importe quel ordre. Par exemple, vous pouvez déclarer que "view1" être placée en dessous de "view2" même si "view2" est le dernier déclarée dans la hiérarchie. L'exemple ci-dessous illustre ce type de scénario.

Exemple

Chacun des attributs qui contrôlent la position relative de chaque vue est mis en avant.

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingLeft="16dp"
    android:paddingRight="16dp" >
    <EditText
        android:id="@+id/name"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="@string/reminder" />
    <Spinner
        android:id="@+id/dates"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_below="@id/name"
        android:layout_alignParentLeft="true"
        android:layout_toLeftOf="@+id/times" />
    <Spinner
        android:id="@id/times"
        android:layout_width="96dp"
        android:layout_height="wrap_content"
        android:layout_below="@id/name"
        android:layout_alignParentRight="true" />
    <Button
        android:layout_width="96dp"
        android:layout_height="wrap_content"
        android:layout_below="@id/times"
        android:layout_alignParentRight="true"
        android:text="@string/done" />
</RelativeLayout>

Pour en savoir plus sur tous les attributs de mise en page disponibles pour chaque vue enfant d'une RelativeLayout, consultez RelativeLayout.LayoutParams.