Aligner et positionner les contrôles .NET MAUI
Chaque contrôle d’interface utilisateur d’application multiplateforme .NET (.NET MAUI) qui dérive de View, qui inclut des vues et des dispositions, a des propriétés HorizontalOptions
et VerticalOptions
, de type LayoutOptions
. La structure LayoutOptions
encapsule l’alignement préféré d’une vue, qui détermine sa position et sa taille dans sa disposition parente lorsque la disposition parente contient un espace inutilisé (autrement dit, la disposition parente est plus grande que la taille combinée de tous ses enfants).
En outre, les propriétés Margin
et Padding
positionnent les contrôles par rapport aux contrôles adjacents ou enfants. Pour plus d’informations, consultez Positionner les contrôles.
Aligner les vues dans les dispositions
L’alignement d’un View, par rapport à son parent, peut être contrôlé en définissant la propriété HorizontalOptions
ou VerticalOptions
de View sur l’un des champs publics de la structure LayoutOptions
. Les champs publics sont Start
, Center
, End
et Fill
.
Les champs Start
, Center
, End
et Fill
sont utilisés pour définir l’alignement de la vue dans la disposition parente :
- Pour l’alignement horizontal,
Start
positionne le View sur le côté gauche de la disposition parente et, pour l’alignement vertical, il positionne View en haut de la disposition parente. - Pour l’alignement horizontal et vertical,
Center
horizontalement ou verticalement centre le View. - Pour l’alignement horizontal,
End
positionne le View sur le côté droit de la disposition parente et, pour l’alignement vertical, il positionne View en haut de la disposition parente. - Pour l’alignement horizontal,
Fill
vérifie que le View remplit la largeur de la disposition parente et, pour l’alignement vertical, elle garantit que View remplit la hauteur de la disposition parente.
Remarque
La valeur par défaut des propriétés HorizontalOptions
et VerticalOptions
d’un affichage est LayoutOptions.Fill
.
Une StackLayout respecte uniquement les champs Start
, Center
, End
et Fill
LayoutOptions
sur les vues enfants qui sont dans la direction opposée à l’orientation StackLayout. Par conséquent, les vues enfants dans un StackLayout orienté verticalement peuvent définir leurs propriétés de HorizontalOptions
sur l’un des champs Start
, Center
, End
ou Fill
. Et de façon similaire, les vues enfants dans un StackLayout orienté horizontalement peuvent définir leurs propriétés de VerticalOptions
sur l’un des champs Start
, Center
, End
ou Fill
.
Une StackLayout ne respecte pas les champs Start
, Center
, End
et Fill
LayoutOptions
des vues enfants dans la même direction que l’orientation StackLayout. Par conséquent, une orientation verticale de StackLayout ignore les champs Start
,Center
ou End
Fill
s’ils sont définis sur les VerticalOptions
propriétés des vues enfants. Et de façon similaire, une orientation horizontale de StackLayout ignore les champs Start
,Center
ou End
Fill
s’ils sont définis sur les HorizontalOptions
propriétés des vues enfants.
Important
LayoutOptions.Fill
remplace généralement les demandes de taille spécifiées à l’aide des propriétés HeightRequest et WidthRequest.
L’exemple de code XAML suivant illustre une orientation verticale de StackLayout où chaque enfant Label définit sa propriété HorizontalOptions
sur l’un des quatre champs d’alignement de la structure LayoutOptions
:
<StackLayout>
...
<Label Text="Start" BackgroundColor="Gray" HorizontalOptions="Start" />
<Label Text="Center" BackgroundColor="Gray" HorizontalOptions="Center" />
<Label Text="End" BackgroundColor="Gray" HorizontalOptions="End" />
<Label Text="Fill" BackgroundColor="Gray" HorizontalOptions="Fill" />
</StackLayout>
La capture d’écran suivante montre l’alignement résultant de chaque Label :
Positionner les contrôles
Les propriétés Margin
et Padding
positionnent les contrôles par rapport aux contrôles adjacents ou enfants. Les marges et le remplissage sont des concepts de disposition liés :
- La propriété
Margin
représente la distance entre un élément et ses éléments adjacents, et est utilisée pour contrôler la position de rendu de l’élément et la position de rendu de ses voisins. Les valeursMargin
peuvent être spécifiées sur les dispositions et les vues. - La propriété
Padding
représente la distance entre un élément et ses éléments enfants et est utilisée pour séparer le contrôle de son propre contenu. Les valeursPadding
peuvent être spécifiées sur les pages, les dispositions et les vues.
Le diagramme suivant illustre les deux concepts :
Remarque
Les valeurs Margin
sont additives. Par conséquent, si deux éléments adjacents spécifient une marge de 20 unités indépendantes de l’appareil, la distance entre les éléments sera de 40 unités indépendantes de l’appareil. En outre, les valeurs de marge et de remplissage sont additives lorsque les deux sont appliquées, dans la mesure où la distance entre un élément et tout contenu sera la marge plus le remplissage.
Les propriétés Margin
et Padding
sont toutes deux de type Thickness
. Il existe trois possibilités lors de la création d’une structure Thickness
:
- Créer une structure
Thickness
définie par une valeur uniforme unique. La valeur unique est appliquée aux côtés gauche, supérieur, droit et inférieur de l’élément. - Créer une structure
Thickness
définie par des valeurs horizontales et verticales. La valeur horizontale est appliquée de manière symétrique aux côtés gauche et droit de l’élément, et la valeur verticale est appliquée de manière symétrique aux côtés supérieur et inférieur de l’élément. - Créer une structure
Thickness
définie par quatre valeurs distinctes appliquées aux côtés gauche, supérieur, droit et inférieur de l’élément.
L’exemple XAML suivant montre les trois possibilités :
<StackLayout Padding="0,20,0,0">
<!-- Margin defined by a single uniform value. -->
<Label Text=".NET MAUI" Margin="20" />
<!-- Margin defined by horizontal and vertical values. -->
<Label Text=".NET for iOS" Margin="10,15" />
<!-- Margin defined by four distinct values that are applied to the left, top, right, and bottom. -->
<Label Text=".NET for Android" Margin="0,20,15,5" />
</StackLayout>
Le code C# équivalent est :
StackLayout stackLayout = new StackLayout
{
Padding = new Thickness(0,20,0,0)
};
// Margin defined by a single uniform value.
stackLayout.Add(new Label { Text = ".NET MAUI", Margin = new Thickness(20) });
// Margin defined by horizontal and vertical values.
stackLayout.Add(new Label { Text = ".NET for iOS", Margin = new Thickness(10,25) });
// Margin defined by four distinct values that are applied to the left, top, right, and bottom.
stackLayout.Add(new Label { Text = ".NET for Android", Margin = new Thickness(0,20,15,5) });
Remarque
Les valeurs Thickness
peuvent être négatives, ce qui entraîne généralement un rognage ou une surdimension du contenu.