Allineare e posizionare i controlli MAUI .NET
Ogni controllo dell'interfaccia utente dell'app multipiattaforma .NET (.NET MAUI) che deriva da View, che include visualizzazioni e layout, ha HorizontalOptions
proprietà e VerticalOptions
di tipo LayoutOptions
. La LayoutOptions
struttura incapsula l'allineamento preferito di una visualizzazione, che ne determina la posizione e le dimensioni all'interno del layout padre quando il layout padre contiene spazio inutilizzato, ovvero il layout padre è maggiore della dimensione combinata di tutti gli elementi figlio.
Inoltre, i controlli di posizione delle Margin
proprietà e Padding
relativi ai controlli adiacenti o figlio. Per altre informazioni, vedere Controlli posizione.
Allineare le visualizzazioni nei layout
L'allineamento di un Viewoggetto , relativo al relativo elemento padre, può essere controllato impostando la HorizontalOptions
proprietà o VerticalOptions
di View su uno dei campi pubblici dalla LayoutOptions
struttura. I campi pubblici sono Start
, Center
, End
e Fill
.
I Start
campi , Center
, End
e Fill
vengono usati per definire l'allineamento della visualizzazione all'interno del layout padre:
- Per l'allineamento orizzontale,
Start
posiziona l'oggetto View sul lato sinistro del layout padre e, per l'allineamento verticale, posiziona l'oggetto View nella parte superiore del layout padre. - Per l'allineamento orizzontale e verticale,
Center
centra orizzontalmente o verticalmente l'oggetto View. - Per l'allineamento orizzontale,
End
posiziona l'oggetto View sul lato destro del layout padre e, per l'allineamento verticale, posiziona l'oggetto View nella parte inferiore del layout padre. - Per l'allineamento orizzontale,
Fill
assicura che riempia View la larghezza del layout padre e per l'allineamento verticale, garantisce che riempia l'altezza View del layout padre.
Nota
Il valore predefinito delle proprietà HorizontalOptions
e VerticalOptions
di una vista è LayoutOptions.Fill
.
Un StackLayout oggetto rispetta solo i Start
campi , Center
, End
e Fill
LayoutOptions
nelle visualizzazioni figlio che si trovano nella direzione opposta all'orientamento StackLayout . Di conseguenza, le visualizzazioni figlio all'interno di un oggetto orientato verticalmente StackLayout possono impostare le relative HorizontalOptions
proprietà su uno dei Start
campi , Center
, End
o Fill
. Analogamente, le visualizzazioni figlio all'interno di un oggetto orientato StackLayout orizzontalmente possono impostare le relative VerticalOptions
proprietà su uno dei Start
campi , Center
, End
o Fill
.
Un StackLayout oggetto non rispetta i Start
campi , End
Center
, e Fill
LayoutOptions
nelle visualizzazioni figlio che si trovano nella stessa direzione dell'orientamentoStackLayout. Pertanto, un orientamento StackLayout verticale ignora i Start
campi , Center
, End
o Fill
se sono impostati sulle VerticalOptions
proprietà delle visualizzazioni figlio. Analogamente, un oggetto orientato StackLayout orizzontalmente ignora i Start
campi , Center
, End
o Fill
se sono impostati sulle HorizontalOptions
proprietà delle visualizzazioni figlio.
Importante
LayoutOptions.Fill
in genere esegue l'override delle richieste di dimensioni specificate usando le HeightRequest proprietà e WidthRequest .
L'esempio XAML seguente illustra un orientamento verticale in StackLayout cui ogni elemento figlio Label imposta la proprietà HorizontalOptions
su uno dei quattro campi di allineamento della LayoutOptions
struttura:
<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>
Lo screenshot seguente mostra l'allineamento risultante di ogni Label:
Controlli posizione
Controlli di posizione delle Margin
proprietà e Padding
relativi ai controlli adiacenti o figlio. I margini e la spaziatura interna sono concetti di layout correlati:
- La
Margin
proprietà rappresenta la distanza tra un elemento e i relativi elementi adiacenti e viene utilizzata per controllare la posizione di rendering dell'elemento e la posizione di rendering dei relativi vicini.Margin
i valori possono essere specificati nei layout e nelle visualizzazioni. - La
Padding
proprietà rappresenta la distanza tra un elemento e i relativi elementi figlio e viene utilizzata per separare il controllo dal relativo contenuto.Padding
I valori possono essere specificati in pagine, layout e visualizzazioni.
Il diagramma seguente illustra i due concetti:
Nota
Margin
i valori sono additivi. Pertanto, se due elementi adiacenti specificano un margine di 20 unità indipendenti dal dispositivo, la distanza tra gli elementi sarà di 40 unità indipendenti dal dispositivo. Inoltre, i valori di margine e riempimento sono additivi quando vengono applicati entrambi, in quanto la distanza tra un elemento e qualsiasi contenuto sarà il margine più spaziatura interna.
Le Margin
proprietà e Padding
sono entrambe di tipo Thickness
. Esistono tre possibilità per la creazione di una Thickness
struttura:
- Creare una
Thickness
struttura definita da un singolo valore uniforme. Il singolo valore viene applicato ai lati sinistro, superiore, destro e inferiore dell'elemento. - Creare una
Thickness
struttura definita da valori orizzontali e verticali. Il valore orizzontale viene applicato simmetricamente ai lati sinistro e destro dell'elemento, con il valore verticale applicato simmetricamente ai lati superiore e inferiore dell'elemento. - Creare una
Thickness
struttura definita da quattro valori distinti applicati ai lati sinistro, superiore, destro e inferiore dell'elemento.
L'esempio XAML seguente illustra tutte e tre le possibilità:
<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>
Il codice C# equivalente è il seguente:
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) });
Nota
Thickness
i valori possono essere negativi, che in genere ritaglia o sovraselabora il contenuto.