[英]Xamarin.Forms - StackLayout labels going outside device width
[英]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
設置為Horizontal的原因是因為如果我設置為Vertical ,其中兩個標簽不適合(這就是為什么它看起來像這樣)。 我嘗試了HeightRequest
和MinimumHeightRequest
但它沒有改變任何東西。
網格應該給您您想要的。 您可以設置行和列的數量以及每行的高度和每列的寬度 。 高度和寬度設置可以是絕對的(您提供明確的高度/寬度值),自動(基於內容)或與“ *”值成比例。 您還可以將一項設置為跨越多行和/或多列 ……就像一個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.