簡體   English   中英

Xamarin.Forms:在 StackLayout 中定位標簽?

[英]Xamarin.Forms: Position labels in StackLayout?

我終於能夠在我的 ListView 中顯示幾個Labels 我的 xaml 看起來像這樣。 如您所見,我只打了 4 個Labels ,這就是顯示的內容:

<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             xmlns:maps="clr-namespace:Xamarin.Forms.Maps;assembly=Xamarin.Forms.Maps"
             xmlns:local="clr-namespace:GasStations"
             x:Class="GasStations.MainPage">

    <Grid RowSpacing="0">
        <Grid.RowDefinitions>
            <RowDefinition Height="*" />
            <RowDefinition Height="50" />
            <RowDefinition Height="auto" />
        </Grid.RowDefinitions>
        <StackLayout Grid.Row="0" x:Name="MapGrid">
            <maps:Map WidthRequest="960" HeightRequest="200" 
                  x:Name="MyMap" IsShowingUser="true"/>
        </StackLayout>
        <StackLayout Grid.Row="1">
            <Button Text="Show list" x:Name="Button_DisplayList"
                VerticalOptions="CenterAndExpand"
                HorizontalOptions="Center"
                Clicked="OnButtonClicked" />
        </StackLayout>
        <StackLayout Grid.Row="2" x:Name="listSection" IsVisible="false" HeightRequest="200">
            <ListView x:Name="ListView_Pets" >
                <ListView.ItemTemplate>
                    <DataTemplate>
                        <ViewCell>
                            <StackLayout Orientation="Horizontal" HeightRequest="200">
                                <Label Text="{Binding StoreName}" FontSize="10"/>
                                <Label Text="{Binding Description}" FontSize="14"/>
                                <Label Text="{Binding Street}" FontSize="8"/>
                                <Label Text="{Binding State}" FontSize="16"/>
                            </StackLayout>
                        </ViewCell>
                    </DataTemplate>
                </ListView.ItemTemplate>
            </ListView>
        </StackLayout>
    </Grid>

</ContentPage>

到現在為止還挺好。 對於任何感興趣的人,這里有一個屏幕截圖

但不是將標簽設置為一個挨着另一個,我想在不同的地方定位。 例如, Label Name將在左上角, Label Desc將在下方,而Label Lon將在右下角,而Label Lat將水平居中。

所以我的問題是:

1) 如何在可用空間內放置這些標簽? 是否有類似html表的等價物可用於將標簽定位在特定位置?

2)如何改變每一行的高度? 我將StackLayout Orientation設置為Horizo​​ntal的原因是因為如果我設置為Vertical ,其中兩個標簽不適合(這就是為什么它看起來像這樣)。 我嘗試了HeightRequestMinimumHeightRequest但它沒有改變任何東西。

網格應該給您您想要的。 您可以設置行和列的數量以及每行的高度和每列的寬度 高度和寬度設置可以是絕對的(您提供明確的高度/寬度值),自動(基於內容)或與“ *”值成比例。 您還可以將一項設置為跨越多行和/或多列 ……就像一個HTML表一樣。

您可以像這樣使用Grid布局來實現:

<ListView x:Name="ListView_Pets">
    <ListView.ItemTemplate>
        <DataTemplate>
            <ViewCell>
                <Grid VerticalOptions="Center">
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition Width="*" />
                        <ColumnDefinition Width="*" />
                        <ColumnDefinition Width="*" />
                        <ColumnDefinition Width="*" />
                    </Grid.ColumnDefinitions>
                    <Label Grid.Row="0"
                           Grid.Column="0"
                           FontSize="10"
                           Text="{Binding StoreName}"
                           VerticalTextAlignment="Center" />
                    <Label Grid.Row="0"
                           Grid.Column="1"
                           FontSize="14"
                           Text="{Binding Description}"
                           VerticalTextAlignment="Center" />
                    <Label Grid.Row="0"
                           Grid.Column="2"
                           FontSize="8"
                           Text="{Binding Street}"
                           VerticalTextAlignment="Center" />
                    <Label Grid.Row="0"
                           Grid.Column="3"
                           FontSize="16"
                           Text="{Binding State}"
                           VerticalTextAlignment="Center" />
                </Grid>
            </ViewCell>
        </DataTemplate>
    </ListView.ItemTemplate>
</ListView>

試試這個:

<Label Text="My text" HorizontalOptions="FillAndExpand" HorizontalTextAlignment="End" />

並確保StackLayout 中的HorizontalOptions="EndAndExpand"HorizontalOptions="EndAndExpand"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM