Cvičení – vytvoření uživatelského rozhraní pomocí StackLayoutu
V tomto cvičení použijete vnořené StackLayout
kontejnery k uspořádání zobrazení v uživatelském rozhraní. První snímek obrazovky ukazuje rozložení implementované počátečním projektem a druhý snímek ukazuje rozložení dokončeného projektu. Vaším úkolem je použít StackLayout
kontejnery a LayoutOptions
převést počáteční projekt na dokončenou verzi.
Prozkoumání úvodního řešení
Úvodní řešení obsahuje plně funkční aplikaci kalkulačky tipů. Začněte tím, že prozkoumáte uživatelské rozhraní, abyste pochopili, co aplikace dělá.
V sadě Visual Studio otevřete úvodní řešení ve složce cvičení2/TipCalculator v úložišti, které jste naklonovali na začátku předchozího cvičení.
Sestavte a spusťte aplikaci v preferovaném operačním systému.
Do textového pole zadejte číslo a pomocí aplikace zjistěte, jak funguje.
Experimentujte s tlačítky pro velikost tipu a posuvníkem.
Až budete hotovi, zavřete aplikaci.
Otevřete MainPage.xaml. Všimněte si, že všechna zobrazení jsou umístěna do jednoho
VerticalStackLayout
, jak ukazuje následující kód XAML:<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" xmlns:local="clr-namespace:TipCalculator" x:Class="TipCalculator.MainPage"> <VerticalStackLayout> <Label Text="Bill" /> <Entry x:Name="billInput" Placeholder="Enter Amount" Keyboard="Numeric" /> <Label Text="Tip" /> <Label x:Name="tipOutput" Text="0.00" /> <Label Text="Total" /> <Label x:Name="totalOutput" Text="0.00" /> <Label Text="Tip Percentage" /> <Label x:Name="tipPercent" Text="15%" /> <Slider x:Name="tipPercentSlider" Minimum="0" Maximum="100" Value="15" /> <Button Text="15%" Clicked="OnNormalTip" /> <Button Text="20%" Clicked="OnGenerousTip" /> <Button x:Name="roundDown" Text="Round Down" /> <Button x:Name="roundUp" Text="Round Up" /> </VerticalStackLayout> </ContentPage>
Oprava uživatelského rozhraní
Když jste viděli spuštění aplikace, můžete ji vylepšit přidáním HorizontalStackLayout
kontejnerů. Cílem je, aby aplikace vypadala jako snímek obrazovky na začátku testovacího prostředí.
Otevřete soubor MainPage.xaml.
Přidejte
40
jednotky odsazení a10
jednotek mezer doVerticalStackLayout
:<VerticalStackLayout Padding="40" Spacing="10">
Přidejte do skupiny
Label
fakturuHorizontalStackLayout
s polemEntry
pod ním. Nastavte vlastnostSpacing
na10
.WidthRequest
Nastavte fakturuLabel
na100
hodnotu aVerticalOptions
vlastnost naCenter
hodnotu . Tyto změny zajistí, že je popisek zarovnaný svisle s polemEntry
.<HorizontalStackLayout Spacing="10"> <Label Text="Bill" WidthRequest="100" VerticalOptions="Center"/> <Entry ... /> </HorizontalStackLayout>
Přidejte další
HorizontalStackLayout
do skupinyLabel
s názvem Tip sLabel
názvem tipOutput.Spacing
Nastavte vlastnost na10
hodnotu aMargin
vlastnost na0,20,0,0
hodnotu .WidthRequest
Nastavení tipuLabel
na100
<HorizontalStackLayout Margin="0,20,0,0" Spacing="10"> <Label Text="Tip" WidthRequest="100" /> <Label .../> </HorizontalStackLayout>
HorizontalStackLayout
Použijte k seskupení součtuLabel
sLabel
názvem totalOutput. Nastavte vlastnostSpacing
na10
.WidthRequest
Nastavení součtuLabel
na100
<HorizontalStackLayout Spacing="10"> <Label Text="Total" WidthRequest="100" /> <Label .../> </HorizontalStackLayout>
Přidejte další
HorizontalStackLayout
do skupinyLabel
s názvem Tip Percentage sLabel
názvem tipPercent.Nastavte vlastnost tohoto
HorizontalStackLayout
objektuEnd
VerticalOptions
a nastavteSpacing
vlastnost na10
:WidthRequest
Nastavení procentuálníLabel
hodnoty tipu na100
<HorizontalStackLayout VerticalOptions="End" Spacing="10"> <Label Text="Tip Percentage" WidthRequest="100"/> <Label ... /> </HorizontalStackLayout>
HorizontalStackLayout
SeskupitButton
s titulkem 15 % a titulkemButton
20 %.Nastavte vlastnost tohoto objektu
Margin
Spacing
na0,20,0,0
hodnotu a vlastnost na10
:StackLayout
<HorizontalStackLayout Margin="0,20,0,0" Spacing="10"> <Button Text="15%" ... /> <Button Text="20%" ... /> </HorizontalStackLayout>
Přidejte závěrečnou
HorizontalStackLayout
skupinu sButton
titulkem Zaokrouhlit dolů aButton
titulek Zaokrouhlit nahoru. Nastavte vlastnost tohoto objektuMargin
Spacing
na0,20,0,0
hodnotu a vlastnost na10
:StackLayout
<HorizontalStackLayout Margin="0,20,0,0" Spacing="10"> <Button ... Text="Round Down" /> <Button ... Text="Round Up" /> </HorizontalStackLayout>
Na všech čtyřech ovládacích prvcích tlačítek nastavte
HorizontalOptions
vlastnost naCenter
hodnotu aWidthRequest
vlastnost na150
hodnotu . Příklad:<Button Text="15%" WidthRequest="150" HorizontalOptions="Center" ... />
Kompletní kód XAML (Extensible Application Markup Language) pro stránku obsahu by měl vypadat takto:
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:local="clr-namespace:TipCalculator"
x:Class="TipCalculator.MainPage">
<VerticalStackLayout Padding="40" Spacing="10">
<HorizontalStackLayout Spacing="10">
<Label Text="Bill" WidthRequest="100" VerticalOptions="Center" />
<Entry x:Name="billInput" Placeholder="Enter Amount" Keyboard="Numeric" />
</HorizontalStackLayout>
<HorizontalStackLayout Margin="0,20,0,0" Spacing="10">
<Label Text="Tip" WidthRequest="100" />
<Label x:Name="tipOutput" Text="0.00" />
</HorizontalStackLayout>
<HorizontalStackLayout Spacing="10">
<Label Text="Total" WidthRequest="100"/>
<Label x:Name="totalOutput" Text="0.00" />
</HorizontalStackLayout>
<HorizontalStackLayout VerticalOptions="End" Spacing="10">
<Label Text="Tip Percentage" WidthRequest="100"/>
<Label x:Name="tipPercent" Text="15%" />
</HorizontalStackLayout>
<Slider x:Name="tipPercentSlider" Minimum="0" Maximum="100" Value="15" />
<HorizontalStackLayout Margin="0,20,0,0" Spacing="10">
<Button Text="15%" Clicked="OnNormalTip" WidthRequest="150" HorizontalOptions="Center"/>
<Button Text="20%" Clicked="OnGenerousTip" WidthRequest="150" HorizontalOptions="Center"/>
</HorizontalStackLayout>
<HorizontalStackLayout Margin="0,20,0,0" Spacing="10">
<Button x:Name="roundDown" Text="Round Down" WidthRequest="150" HorizontalOptions="Center"/>
<Button x:Name="roundUp" Text="Round Up" WidthRequest="150" HorizontalOptions="Center"/>
</HorizontalStackLayout>
</VerticalStackLayout>
</ContentPage>
Prozkoumání výsledků
Spusťte aplikaci znovu a podívejte se na rozdíly v uživatelském rozhraní. Ověřte, že jsou ovládací prvky správně zarovnané a mají správnou velikost a mezeru.
Použili VerticalStackLayout
jste kontejnery HorizontalStackLayout
a vylepšili tak estetickou stránku stávajícího uživatelského rozhraní. Tato rozložení jsou nejjednodušší panely rozložení, ale jsou dostatečně výkonné, aby vzniklo rozumné uživatelské rozhraní.